PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gibt es ein Script das mir die arbeit abnimmt ca. 150 User anzulegen ??



Thyral
04.01.03, 23:50
Hallo Freunde,

ich habe mein System so ganz gut im Griff bekommen, dank eurer Hilfe, danke dafür !!

Jetzt habe ich ein anderes Problem, gibt es ein Script das mir die Arbeit abnimmt ca. 150 User in 5 Gruppen von Hand anzulegen ??

Gibt es ein Script Editor ?
Gibt es eine Seite für solch ein Problem ?

Wenn ich logisch rangehe, kann ich useradd NAME so eingeben, dann kann ich es doch auch bestimmt abfragen , bloß ganz soweit gehen meine Kentnisse noch nicht !!

Vieleicht in 2-3 Jahren !! :-))

THX

msi
04.01.03, 23:54
schau dir mal perl an, das ist eine leichte sehr mächtige Programmiersprache, mir der kann man sowas leicht erledigen.
Wenn du uns sagen würdest, ob du schon eine Liste von Usern und deren Gruppe(n) hast könnten wir dir beim Script ein wenig helfen.

Ein Programm, das soetwas macht kenn ich nicht.

HackThor
05.01.03, 00:16
Ja, perl. Oder auch awk. Eine Liste wäre ganz nett - z.B. mit einer Tabellenkalkulation erstellt und dann als "csv" (comma separated values) exportiert und dann useradd/groupadd über ein Script (welches die entpsrechenden Werte mit den Optionen verknüpft) füttern. Nix unlösbares....

ciao

Michael

kth
05.01.03, 00:44
@ Thyral

Guck' dir mal den Batch-Modus von userman (http://freshmeat.net/projects/userman/?topic_id=253) an (und usrmgr (http://freshmeat.net/projects/usrmgr/?topic_id=253)).

Thyral
05.01.03, 00:45
Hallo Leute, danke für die Antworten !!

ich habe keine direkte Vorgabe, ich brauch es für eine Schule !!

6 Gruppen, Klasse 8,9,10a,10b,10c, Lehrer

in jeder Klasse sind ca. 25 Schüler, wobei es reicht wenn sich der Name aus der klasse und einer Nummer zusammen setzt.

Dann kommen die Lehrer, es reicht wenn die Trainer 1-20 durchnummeriert werden.

Jetzt kommt das echte Problem, die Passwörter, mir ist nicht bekannt das man das Passwort bei LINUX SO WIE BEI Windoff bei der ersten Anmeldung selbst vergeben kann, also würde ich jeden Benutzer ein Passwort zuweisen, das so heisst wie der name, was aber nach 1 Tag gewechselt werden muss.

Hammeraufgabe, ich kann die nicht lösen. Ich würde jetzt bei gehen und anfangen jeden Benutzer per Hand anzulegen.

Wo findet man PERL ?

Danke für die MÜHE

HackThor
05.01.03, 00:59
Schau mal da nach:

http://www.ibiblio.org/pub/Linux/system/admin/accounts/!INDEX.html

Eventuell ist ja da was bei was du brauchst (... und auch funktioniert...)

ciao

Michael

msi
05.01.03, 00:59
perl kannst du auf deinem linux system installieren (ist wharscheinlich schon installiert existiert die datei /usr/bin/perl?)

such im Internet nach einem kleinen Tutorial, die gibt es zu Hauf. Bei Fragen: --> www.mrunix.de <--

Markus

Jasper
05.01.03, 01:36
Original geschrieben von Thyral
Jetzt habe ich ein anderes Problem, gibt es ein Script das mir die Arbeit abnimmt ca. 150 User in 5 Gruppen von Hand anzulegen ??


das problem wurde hier vor einiger zeit behandelt. probier mal die suchfunktion aus.



Gibt es ein Script Editor ?


vim.

-j

RapidMax
05.01.03, 02:43
Wie liegen die Daten vor? Eine Tabelle?

Es ist nicht unbedingt nötig ein kompliziertes Script zu schreiben. Wenn die Daten als Tabelle vorliegen, ist es ev. einfacher dort die Usernamen/Gruppen/Anfangspasswort zu generieren. Die Tabelle muss sowieso ausgedruckt werden. Die Tabelle exportiert du dann in eine cvs-Datei:

user;fullname;group;password

Als Username könntest du z.B. folgendes Muster nehmen: Hans Muster -> mustehan
Falls es mehrere Hans Muster gibt, wird einfach eine Nummer hinzugefügt: musteha1

Das folgende Script legt zuerst die in der Variablen CLASSES angegebenen Gruppen an. Die einzelnen User werden nicht einfach nur in /home/user erzeugt, sondern noch in ein Unterverzeichnis mit dem Klassennamen: /home/klasse/user
Danach werden die User angelegt, wobei die Datei in der Variablen USERLIST eingelesen wird.

#!/bin/sh
# diese Konstanten können angepasst werden
USERLIST="userlist.cvs"
HOMES="/home"
CLASSES="k8,k9,k10a,k10b,k10c,lehrer"

for a in $(IFS=",${IFS}"; echo ${CLASSES}); do
groupadd "${a}"
mkdir -p "${HOMES}/${a}"
chown "root.${a}" "${HOMES}/${a}"
chmod 755 "${HOMES}/${a}"
done

CURLINE=$((1))
LINES=$(($(cat ${USERLIST} | wc -l)))
while [ ${CURLINE} -le ${LINES} ]; do
LINE=$(cat ${USERLIST} | awk "{ if (NR == ${CURLINE}) print }")
UNAME=$(echo ${LINE} | cut -d ";" -f 1)
FNAME=$(echo ${LINE} | cut -d ";" -f 2)
GNAME=$(echo ${LINE} | cut -d ";" -f 3)
IPWD=$(echo ${LINE} | cut -d ";" -f 4)
adduser -c "${FNAME}" -d "${HOMES}/${GNAME}/${UNAME}" \
-g "${GNAME}" -p "${IPWD}" "${UNAME}"
CURLINE=$((${CURLINE}+1))
done


ev. musst du noch das Skeleton für die Homeverzeichnisse /etc/skeleton vorher anpassen. Falls über SMB auf den Rechner zugegriffen werden muss, darfst du nicht vergessen den Benutzer in der Samba-Benutzerdatenbank ebenfalls anzulegen und das Passwort dort zu setzen.
Das Passwort läuft noch nicht ab.

Das Script ist ein kurzer Hack und kann sicher nöch schöner programmiert werden.

Gruss, Andy

Tomonage
05.01.03, 03:26
hi!


wenn ich mich nicht irre kann man sowas auch mit expect machen

Thyral
05.01.03, 20:38
Danke, Danke.

ich habe mir den SourceCode rauskopiert in in eine neuen Datei kopiert, die Datei heisst "user.sh", dann habe ich
"chmod +777 user.sh" gemacht, habe ich irgendwo gelesen. Und nun versuche ich das Script zu starten, da passiert aber nichts, wie kann ich das script starten ??

ich dachte es reicht wenn ich "user.sh" auf der Bash eingebe.

Habe ich ein Denkfehler ??

Danke nochmal für eure Mühe !

msi
05.01.03, 21:01
./script.sh

aus Sicherheitsgründen werden Programme im aktuellen Verzeichnich (working directory) nicht ausgeführt.
Deshalb musst du ein ./ davor tun.

Thyral
05.01.03, 21:33
@RapidMax
Hallo, das hat ja fast gut geklappt, das Problem ist, nachdem ich es geschaft habe es zu starten, sind die Ordner für die Klassen angelegt worden, ich bekomme immer eine Fehlermeldung mit der ich nichts anfangen kann

"cat: userlist.cvs: No such file or directory" muss ich diese Liste erst anlegen ??

oder wird die irgendwo generiert? ich habe von programmieren fast keine Ahnung, gebe ich ja zu. Aber ich habe lust zu probieren und zu lernen.

RapidMax
05.01.03, 22:20
Ähm, meinen Beitrag hättest du schon durchlesen müssen. Das Script ist entstanden, weil ich einfach wieder einmal Lust hatte zu coden ;) Getestet habe ich es insofern, indem ich vor die eigentlichen Befehle ein "echo" gesetzt habe. Ob es funktioniert konnte ich nur anhand der Ausgabe sehen.

Das Script ist ein kurzer Hack und kann sicher nöch schöner programmiert werden.
Das du es ausführst ohne es vorher zu verstehen ist ein wenig fahrlässig.

Also: die Datei userlist.cvs musst natürlich du selber anlegen.

Ich schlage dir jetzt vor, das ganze nochmals genau zu lesen, die cvs-Datei anzulegen und auch hineinzusehen ob sie korrekt ist!

Im Script kannst du den ersten Teil entfernen: Die Gruppen und Unterverzeichnisse sind jetzt bereits angelegt.

Um sicher zu gehen, dass das Script richig läuft, kannst du vor adduser ein "echo" hinzufügen: "echo adduser"
Jetzt passiert nichts und anhand der Ausgabe siehst du was passiert (ist einfacher als nachher 160 User zu löschen).

Gruss, Andy

stefaan
05.01.03, 22:48
Servus!

Webmin kann auch irgendwas in diese Richtung.

Grüße, Stefan

rabenkind
05.01.03, 23:44
hi to all

@RapidMax

danke für das script, ich lerne immer gerne was dazu. und scripten gehört zu den offenen posten. :cool:

@all

ich habe lieber ein kleines script das ich schnell verstehe und ändern kann. besser als irgendein proggi, wo ich fünf bis sechs wochen bräuchte um den c++ code zu analysieren, um etwas ändern zu können. :D

greetz rabenkind :))