PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 500 Benutzer auf einmal anlegen



LotharL
23.02.10, 15:19
Wie kann ich unter Debian ca. 500 Benutzer auf einmal anlegen? Als Grundlage für diese Benutzer dient mir eine Excel Tabelle in der für jeden Benutzer der Benutzername sowie das erstmalige Anmeldepasswort vorhanden ist. Alle diese Benutzer sind Mitglieder der gleichen Gruppe.

derRichard
23.02.10, 15:26
hi!

exportiere die excel-tabelle als csv-datei.
diese kannst du dann unter linux mit cut oder awk lesen und die entsprechenden useradd-kommandos absetzen...

hth,
//richard

LotharL
23.02.10, 15:31
Hallo Richard, danke für die schnelle Antwort
jetzt fängt mein Problem an. Mit welchen Kommandos bekomme ich diese CSV Datei auf einmal eingelesen? Hättest Du mir dafür ein Beispiel?
Danke

derRichard
23.02.10, 15:35
hi!

wie ich schon geschrieben habe mit awk oder cut.
das ganze sollte bis etwas shell-scripting zu lösen sein.

hth,
//richard

Rain_maker
23.02.10, 15:37
awk -F 'Trennzeichen' '{print $So_Und_so_vielte_Spalte}' Datei

Findet man auch massenweise Anleitungen, wenn man mal "awk Spalte ausgeben" durch $SUCHMASCHINE jagt.

ThorstenHirsch
23.02.10, 16:33
Sowas lässt sich auch schön in Perl realisieren:

open(FH, "< meineCSVdatei.csv");
while (<FH>) {
my ($user, $fullname, $uid, $gid) = split(/;/, $_);
print "Lege user $name an...\n";
system("useradd $user -u $uid -g $gid...");
die "FEHLER: rc=$?\n" if($? != 0);
}
close(FH);
Ich finde, dass man Perl viel besser lesen kann als awk.

msi
07.03.10, 12:04
zB so in bash


IFS=','; while read u v n; do echo useradd "$u"; done < liste.cvs

yankeeCGN
13.03.10, 11:44
foreach(file("users.csv") as $user)
{
$user = explode(',', $user);
system('useradd -p '.escapeshellarg(crypt($user[PASSWORTSPALTE])).' '.escapeshellarg($user[SPALTE_MIT_BENUTZERNAME]));
}
Das ganze als Einzeiler zum einfachen direkten copy&paste:

php -r 'foreach(file($_SERVER['\''argv'\''][1]) as $user){ $user = explode('\'','\'', $user); system('\''useradd -p '\''.escapeshellarg(crypt($user[$_SERVER['\''argv'\''][2]])).'\'' '\''.escapeshellarg($user[$_SERVER['\''argv'\''][3]]));}' users.csv 0 1
Lediglich ganz hinten das users.csv muss durch die csv-Datei ersetzt werden und die 0 durch die Spaltennummer mit den Passwörtern und die 1 durch die Spaltennummer mit den Benutzernamen.

Alles ungetestet und ohne Gewähr ^^

derRichard
13.03.10, 12:07
inzwischen sollte jedem klar sein, dass es in jeder sprache ein weniger als 10 zeilen geht...

//richard