geist_der_foren Geschrieben 12. Dezember 2003 Teilen Geschrieben 12. Dezember 2003 Hi @all, ich hab eine liste mit Verschiedenen user (ca. 300), die ich anlegen muss. Dafür habe ich ein kleins Shell-skript geschrieben. Jetzt habe ich ein problem, also die User kann ich ohne Probleme anlegen, nur dass jetzt die User auch noch diesen kommentar bekommen müssen ... Wie kann ich das noch in mein Skript einbauen ??? #!/bin/bash ID=1000 for user in `cat user-datei` do useradd -m -u $ID -s /bin/bash -p Wnfn6EbfHzmzk $user ID=$((ID+1)) done Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.disk Geschrieben 12. Dezember 2003 Teilen Geschrieben 12. Dezember 2003 Evtl. bringt's Dich weiter wenn Du noch als zusätzliches Argument -c "Dies ist ein supertoller Kommentar" hinzufügst. War das das was Du meintest? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geist_der_foren Geschrieben 12. Dezember 2003 Autor Teilen Geschrieben 12. Dezember 2003 Ja, aber, dann bekommt ja jeder User den gleichen kommentar ! Ich hab eine Liste mit einem Kommentar für jeden USER, wie kann ich das jetzt so einbinden, dass die Liste ausgelesen wird ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 13. Dezember 2003 Teilen Geschrieben 13. Dezember 2003 Hallo, das ist total einfach, es kommt nur darauf an, wie deine Liste (eventl. Textdatei) aussieht bzw. wie die aufgebaut ist. Bitte poste mal einfach das Layout. Dann kann man dir auch weiterhelfen... Sieht sie so aus: user das ist der Chef user2 das ist der Vorstand oder etwa so: user das ist der Chef user2 das ist der Vorstand oder doch so: user:das ist der Chef user2:das ist der Vorstand ?? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geist_der_foren Geschrieben 14. Dezember 2003 Autor Teilen Geschrieben 14. Dezember 2003 Also ich hab 2 Varianten bis jetzt ... Die erste Variante: ============== Es gibt 2 Text Dateien. In der ersten stehen die User drin und in der 2. die Kommentare. Die zweite Variante: ============== Die /etc/passwd... Also es geht darum, dass ich ein system installiert habe und genau die gleichen User, die auf dem Alten system noch definiert sind, müssen auch auf dem Neuen System definiert werden. Format: username:x:500:100:kommentar:/home/username:/bin/bash Kannst du mir helfen ? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 14. Dezember 2003 Teilen Geschrieben 14. Dezember 2003 Du kannst die Einträge aus der passwd und shadow Datei einfach kopieren und in die neue passwd und shadow Datei einfügen. Dabei mußt Du aber aufpassen, dass die Userid nicht doppelt vorkommt. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geist_der_foren Geschrieben 14. Dezember 2003 Autor Teilen Geschrieben 14. Dezember 2003 Das ist nicht so einfach ... Die User bekommen auf dem System ein ID ab 1000 und dann kommen noch weitere andere vorgaben, die beachtet werden müssen ... Jeder User bekommt dann ein Start passwort, dass er beim esten anmelden, gleich ändern muss (passwd -e USERNAME) Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geist_der_foren Geschrieben 15. Dezember 2003 Autor Teilen Geschrieben 15. Dezember 2003 Hi noch mal.... also ich hab mich jetzt enschieden, das Layout der Datei sieht folgender masen aus: user:das ist der Chef user2:das ist der Vorstand Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 15. Dezember 2003 Teilen Geschrieben 15. Dezember 2003 #! /bin/bash ID=1000 for user in $(cat user-datei); do echo "Kommentar fuer User '$user' eingeben..." read comment echo useradd -m -u -s /bin/bash -c $comment -p xyz $user ID=$((ID+1)) done so, vielleicht erleichtert dieses Konstrukt deine Arbeit. Besser konnte ich es auf die Schnelle auch nicht lösen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
DanielB Geschrieben 15. Dezember 2003 Teilen Geschrieben 15. Dezember 2003 Hi, folgendes hilft Dir eventuell weiter : #!/bin/bash ID=1000 USERS=/tmp/users while read LINE do USER=`echo $LINE | cut -f 1 -d :` COMMENT=`echo $LINE | cut -f 2 -d :` echo "useradd -u $ID -c "$COMMENT" -d /home/$USER -m $USER" ID=`expr $ID + 1` done < $USERS Sollte es sich um eine größere Anzahl von Benutzern handeln die auf diversen System vorhanden seinen müssen, solltest Du mal einen Blick auf ein zentrale Benutzerverwaltung, wie z.B. LDAP werfen. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 16. Dezember 2003 Teilen Geschrieben 16. Dezember 2003 Original geschrieben von DanielB Hi, folgendes hilft Dir eventuell weiter : #!/bin/bash ID=1000 USERS=/tmp/users while read LINE do USER=`echo $LINE | cut -f 1 -d :` COMMENT=`echo $LINE | cut -f 2 -d :` echo "useradd -u $ID -c "$COMMENT" -d /home/$USER -m $USER" ID=`expr $ID + 1` done < $USERS Ich glaube das ist das, was er gebraucht hat Ganz kleine Verbesserung: #!/bin/bash ID=1000 USERS=/tmp/users while read LINE do USER=`echo $LINE | cut -f 1 -d :` COMMENT=`echo $LINE | cut -f 2 -d :` echo "useradd -u $ID -c "\""$COMMENT"\"" -d /home/$USER -m $USER" ID=`expr $ID + 1` done < $USERS Ich weiß zwar nicht, ob dem useradd das was ausmacht, aber sicher ist sicher (Comment in Doppelhochkommas). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geist_der_foren Geschrieben 18. Dezember 2003 Autor Teilen Geschrieben 18. Dezember 2003 Hi @all, danke für die Lösungen ... Ihr hab mir sehr geholfen ... Eins verstehe ich immer noch nicht, ich hab das skript so ausgeführt:#!/bin/bash ID=1000 USERS=/shell-skripte/datei while read LINE do USER=`echo $LINE | cut -f 1 -d :` COMMENT=`echo $LINE | cut -f 2 -d :` echo "useradd -u $ID -c "\""$COMMENT"\"" -d /home/$USER -s /bin/ksh -p Wnfn6EbfHzmzk -m $USER" echo "passwd -e $USER" ID=`expr $ID + 1` done < $USERS Einer der Aushaben sieht folgendermasen aus:useradd -u 1048 -c "K.D. Hutter" -d /home/hutter -s /bin/ksh -p Wnfn6EbfHzmzk -m hutter passwd -e hutter Das komische ist jetzt nur, wenn ich das Skript so laufen lasse, kommt immer folgende Meldung von useradd:usage: useradd [-u uid [-o]] [-g group] [-G group,...] [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name useradd -D [-g group] [-b base] [-s shell] [-f inactive] [-e expire ] Der hat ein Problem mit den Kommentaren ... Aber wieso ??? Ich hab, dass es jetzt dringens ist, einfach die ausgaben in eine andere Datei umgeleitet und einfach als Skript ausgeführt... Aber hat einer eine Ahnung wieso er da Probs hat ??? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schlaubi Geschrieben 18. Dezember 2003 Teilen Geschrieben 18. Dezember 2003 ja klar....jetzt verstehe ich es erst! Also du hast folgendes Problem.....wenn du nen echo vor das useradd machst, dann brauchst du sowas: echo "\""$comment"\"" hingegen bei useradd: useradd "$comment" ließ dir die Zeilen langsam durch und dann siehst du auch den großen Unterschied! Dann schreibs halt doch so: Achtung: ich hab das echo jetzt weggenommen! #!/bin/bash ID=1000 USERS=/tmp/users while read LINE do USER=`echo $LINE | cut -f 1 -d :` COMMENT=`echo $LINE | cut -f 2 -d :` "useradd -u $ID -c "$COMMENT" -d /home/$USER -m $USER" ID=`expr $ID + 1` done < $USERS Ich finde halt das andere Konstrukt besser: 1. Weil es eine Art debug ist - du kannst die Kommandos vorher kontrollieren - somit besteht die Möglichkeit die Strings ggf. zu verändern 3. Weil du ganz einfach die Kommandos mit der linken Maus markieren kannst und mit der rechten Maustaste bzw. MausRad wieder pasten kannst...d.h. die Kommandos werden autom. ausgeführt! und das find ich doch saupraktisch (sorry für den Ausdruck). Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
geist_der_foren Geschrieben 18. Dezember 2003 Autor Teilen Geschrieben 18. Dezember 2003 Achso ... Klar, dass war ja nur fürs echo. Stimmt, mit dem echo, kann man Testen, was da Eigentlich raus kommt ... Jetzt funkt es auch wie es soll ... Man muss nur noch die anfürungszeichen in der useradd - Zeile wegnehmen:#!/bin/bash ID=1000 USERS=/tmp/users while read LINE do USER=`echo $LINE | cut -f 1 -d :` COMMENT=`echo $LINE | cut -f 2 -d :` "useradd -u $ID -c "$COMMENT" -d /home/$USER -m $USER" ID=`expr $ID + 1` done < $USERS Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.