Hallo,
leider sind meine Prgrammierkentnisse nicht so gut. Habe folgendes Problem:
Ich muss ca. 800 User auf einem System anlegen. Der Username und das Passwort sind bekannt. Diese liegen z.B. in Form einer Textdatei vor.
123456789;asdfghjklö;Müller [Username;Passwort;Name]
234567890;lkhhggfdd;Maier
usw.
Wie kann ich nun mit einem Script zwei Dateien anlegen, die dann folgenden Inhalt haben:
1. passwd.temp
123456789laufende Nummer:Gruppe fest:Name:festes Homeverzeicnis:/bin/false
234567890laufende Nummer:Gruppe fest:Name:festes Homeverzeicnis:/bin/false
usw.
2. shadow.temp
123456789:passwort:0:99999:7:::
234567890:passwort:0:99999:7:::
passwort mit mit foldendem Programm erzeugt:
#!/bin/perl
use Crypt::PasswdMD5;
chomp(my $password = <STDIN>);
chomp(my $salt = <STDIN>);
$crypted = unix_md5_crypt($password, $salt);
print "$crypted\n";
evtl. geht noch:
{ echo "password"; sleep1; echo "password"; } | passwd "user"
Vielen Dank im voraus für jede Info.
Script um Username und Passwort anzulegen
test datei erzeugt:
perl script erzeugt:
getestet:
Gruß
gms
Code: Alles auswählen
root:~# cat x.txt
test;lkhhggfdd;testname
Code: Alles auswählen
#!/bin/perl -w
use Crypt::PasswdMD5;
my ($PWD,$SDW);
open($PWD,">","passwd.temp") or die $_;
open($SDW,">","shadow.temp") or die $_;
my $uid=2000;
my $gid=100;
my $salt="gRzBrzLT";
while (<STDIN>) {
chomp;
++$uid;
my ($name,$password,$fullname)=split(/;/,$_);
my $encpassword = unix_md5_crypt($password,$salt);
print $PWD "$name:x:$uid:$gid:$fullname:/home/$name:/bin/false\n";
print $SDW "$name:$encpassword:$uid:0:99999:7:::\n";
}
getestet:
Code: Alles auswählen
root:~# cat x.txt | perl x.pl
root:~# cat passwd.temp
test:x:2001:100:testname:/home/test:/bin/false
root:~# cat shadow.temp
test:$1$gRzBrzLT$xXPVU/cpmcGlZL2aMh0cG0:2001:0:99999:7:::
root:~# cat passwd.temp >>/etc/passwd
root:~# cat shadow.temp >>/etc/shadow
root:~# su gms
gms@gms1:/root$ su test
Password:
gms@gms1:/root$
gms