Script um Username und Passwort anzulegen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
geriom
Beiträge: 279
Registriert: 16.10.2004 08:13:37

Script um Username und Passwort anzulegen

Beitrag von geriom » 06.07.2005 09:01:59

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
123456789:x:laufende Nummer:Gruppe fest:Name:festes Homeverzeicnis:/bin/false
234567890:x:laufende 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.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 08.07.2005 19:31:51

test datei erzeugt:

Code: Alles auswählen

root:~# cat x.txt
test;lkhhggfdd;testname
perl script erzeugt:

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$ 
Gruß
gms

geriom
Beiträge: 279
Registriert: 16.10.2004 08:13:37

Beitrag von geriom » 09.07.2005 08:30:09

Hallo,

ich bin völlig sprachlos. Es klappt!!!!!!!!!!!!!!!!!!!!!!!!!!! Das erspart uns etliche Tipparbeit.

Vieeeeeeeeeeeeeeellllllllllllleeeeennnnn DAAAAAAAAAAAAAANNNNNNNNNNNNKKKK

Antworten