> ich would like to use the Samba-Server as an PDC for a school.
> Because of the high numbers of students it is not possible for us to add
> ervery student by hand an think about a pw.
> Has anyone designed a script which read the users from an ASCII-file and
> add's them to the samba?
>
> Regards,
>
> Michael Lechner
I have for the same purpose created two little perl-scripts which read
from standard in. The first creates accounts for pupils, the other for
teacher.
I create 40 accounts per class:
#! /usr/bin/perl

open( PASSWD, "./passwdGen.sh| " );
$lastUID = 7976;
@usersPre = <STDIN>;
$lastUID++;
foreach $userMark ( @usersPre ) {
        chop( $userMark );
        for( $i=1; $i <= 40; $i++ ) {
                print "dn: cn=$userMark-$i,dc=my-org,dc=schule\n";
                #print "dn: cn=$userMark-03-$i,dc=my-org,dc=schule\n";
                print "objectclass: posixAccount\n";
                print "objectclass: account\n";
                print "objectclass: mailRecipient\n";
                print "cn: $userMark-$i\n";
                #print "cn: $userMark-03-$i\n";
                print "uid: $userMark-$i\n";
                #print "uid: $userMark-03-$i\n";
                print "uidNumber: $lastUID\n";
                print "gidNumber: 500\n";
                print "homeDirectory: /home/schueler/$userMark-$i\n";
                print "loginShell: /bin/false\n";
                print "mail: [EMAIL PROTECTED]";
                print "mailLocalAddress:
[EMAIL PROTECTED]";
                print "mailDeliveryOption: accept\n";
                print "description: schueler\n";
                print "\n";
                $lastUID++;

        }
}

Creating the teacher-accounts is nearly the same, except for the gid and
the for-loop.
It creates the ldif, so I can just have a quick look at it, befor I
ldapadd it.
After the entries are added, I add the sambaSamAccount:
#! /usr/bin/perl

open( PASSWD, "/root/createUser/passwdGen.sh| " );
@usersPre = <STDIN>;
foreach $userMark ( @usersPre ) {
        chop( $userMark );
        for( $i=1; $i <= 40; $i++ ) {
                open( PASSWD, "./passwdGen.sh| " );
                $pass = <PASSWD>;
                chop( $pass );

                print "#\n";
                print "#$userMark-03-$i \t \t $pass \n";
                print "#--------------------------------\n";

                system( "ldappasswd -D cn=root,dc=my-org,dc=schule -x -w
\"insecure-way!\" -s \"$pass\"
cn=$userMark-03-$i,dc=my-org,dc=schule" ) && die
"unexpected ldappasswd error";
                system( "/opt/samba3/bin/smbpasswd -a $userMark-03-$i
\"$pass\"" ) && die "unexpected smbpasswd error";
                system( "/usr/local/samba/bin/pdbedit -u $userMark-03-$i
-d P:") && die "unexpected pdbedit homedrive error";
                system( "/usr/local/samba/bin/pdbedit -u $userMark-03-$i
-h \\\\fileserver\\$userMark-03-$i" ) && die "unexpected
pdbedit homedir error";

                system( "mkdir /home/schueler/$userMark-03-$i" ) && die
"unexpected mkdir error";
                system( "chown $userMark-03-$i
/home/schueler/$userMark-03-$i" )
 && die "unexpected chown error";
                system( "chgrp lehrer /home/schueler/$userMark-03-$i" ) &&
die "unexpected chgrp error";
                system( "chmod 770 /home/schueler/$userMark-03-$i" ) &&
die "unexpected chmod error";
        }
}

The passwdgen.sh is simply:
#!/bin/bash
/root/bin/apg -a 0 -M cn -E 0O1lI -n 1 -m 8 -x 8
which uses apg (Advanced Password Generator) to create somewhat secure
passwords which are readable and easy to remember (I don't let the users
change their passwords).

Have fun,
Malte M�ller
BBS1 Emden

--
To unsubscribe from this list go to the following URL and read the
instructions:  http://lists.samba.org/mailman/listinfo/samba

Reply via email to