#! /usr/bin/perl $opt_n=50; $opt_l=3; $opt_basedn="dc=farmnet,dc=nikhef,dc=nl"; $opt_nfs="hooimijt:/export/cache/edgdevtb/poolaccounts"; @optdef=qw( v vo=s n:i basedn l:i b|uidbase:i g|gid=i ); use Getopt::Long; $Getopt::Long::ignorecase=0; &GetOptions(@optdef); $opt_vo or die "No VO specified\n"; length($opt_vo)>5 and die "VO name too long\n"; $opt_g or die "No GroupID specified\n"; $opt_b or die "No start of UID numbering specified\n"; $opt_v and print "Generating VO $opt_vo with $opt_n accounts\n"; $opt_v and print "in DIT position $opt_basedn\n"; $fmtstring='%s%0'.$opt_l.'d'; for($i=1;$i<=$opt_n;$i++) { $uid=sprintf($fmtstring,$opt_vo,$i); $n=$i+$opt_b; print "dn: uid=$uid, ou=PoolAccounts, $opt_basedn\n"; print "objectclass: top\n"; print "objectclass: posixAccount\n"; print "cn: VO $opt_vo member no $i\n"; print "uid: $uid\n"; print "uidNumber: $n\n"; print "gidNumber: $opt_g\n"; print "homeDirectory: /home/$uid\n"; print "loginShell: /bin/sh\n"; print "description: $opt_nfs/$uid\n"; print "\n"; print "dn: cn=$uid,ou=pool,ou=auto.home,ou=automount,$opt_basedn\n"; print "objectclass: top\n"; print "objectclass: automount\n"; print "cn: $uid\n"; print "automountInformation: $opt_nfs/$uid\n"; print "description: EDG dev testbed pool account $uid\n"; print "\n"; }