Zum Inhalt springen

Shell Skrit um USER Anzulegen...


geist_der_foren

Empfohlene Beiträge

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

??

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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).

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 ???

Link zu diesem Kommentar
Auf anderen Seiten teilen

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). ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...