On Mon, Jan 22, 2001 at 07:26:14 +0100, Erich Baur wrote: > Hallo Liste!
hiho, > Gibt es eine Möglichkeit, ein Script zu schreiben, welches automatisch beim > Starten von Linux sechs Konsolen öffnet, damit man nicht von Hand überall > Loginname und Passwort eingeben muß? Ideal wäre noch, wenn man den > Benuzternamen im Script jeweils angeben könnte. ja. da es nur ein rel. kurzes c programm ist, poste ich es mal. sorry schon mal an alle die, die sich jetzt wegen der grösse aufregen :-/ --[snippelsnappel]-- /* * utty.c Fri Jun 23 14:12:24 GMT 2000 Herbert Rosmanith * [EMAIL PROTECTED] * * bringt eine login shell auf einem tty, ohne dass man sich * anmelden muss * * compile: cc -s -o utty utty.c * * Usage: utty <user> <tty> * * der geeignetste platz fuer dieses programm ist die inittab, * etwa so: * * /etc/inittab * [...] * t6:23:respawn:/sbin/utty herp /dev/tty6 * t7:23:respawn:/sbin/utty herp /dev/tty7 * t8:23:respawn:/sbin/utty herp /dev/tty8 * t9:23:respawn:/sbin/utty herp /dev/tty9 * ta:23:respawn:/sbin/utty herp /dev/tty10 * tb:23:respawn:/sbin/utty herp /dev/tty11 * tc:23:respawn:/sbin/utty herp /dev/tty12 * [...] * # End of /etc/inittab */ #include <stdio.h> #include <sys/types.h> #include <sys/ioctl.h> #include <sys/stat.h> #include <string.h> #include <pwd.h> #include <grp.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> void die(char *s) { if (errno) perror(s); else fprintf(stderr,"%s\n",s); exit(-1); } int main(int argc,char *argv[]) { struct passwd *pwd; struct group *gr; char *args[2] = { "-bash", NULL }; char *envp[3]={ "TERM=vt100", NULL, NULL }; char msg[]="\nYou are now on \0\0\0\0\0\0\0\0\0\0\0\0"; char *ch; int fd; int i=1; if (argc!=3) die("usage: utty <user> <tty>"); if ((pwd=getpwnam(argv[1]))==NULL) die("user unknown"); if ((gr=getgrnam("tty"))==NULL) die("group 'tty' unknown"); close(0); close(1); close(2); if ((fd=open(argv[2],O_RDWR))!=0) die("open"); if (dup2(0,1)!=1) die("dup2 1"); if (dup2(0,2)!=2) die("dup2 2"); if (ioctl(fd,TIOCSCTTY,&i)==-1) die("ioctl TIOCSCTTY"); if (fchown(fd,pwd->pw_uid,gr->gr_gid)==-1) die("fchown"); if (fchmod(fd,0620)==-1) die("fchmod"); strcat(msg,(ch=rindex(argv[2],'/'))?ch+1:argv[2]); write(fd,msg,strlen(msg)); envp[1]=(char *)malloc(5+/*HOME=*/strlen(pwd->pw_dir)+1); sprintf(envp[1],"HOME=%s",pwd->pw_dir); chdir(pwd->pw_dir); setgid(pwd->pw_gid); setuid(pwd->pw_uid); execve("/bin/bash",args,envp); die("execve"); --[snippelsnappel]-- -- ----------------------------------------------------------- Um sich aus der Liste auszutragen schicken Sie bitte eine E-Mail an [EMAIL PROTECTED] die im Subject "unsubscribe <deine_email_adresse>" enthaelt. Bei Problemen bitte eine Mail an: [EMAIL PROTECTED] ----------------------------------------------------------- 684 eingetragene Mitglieder in dieser Liste.