Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

??

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 ?

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)

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


#! /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.

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.

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

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

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

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

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.