#!/opt/bin/perl ############################################################################### # # # Program to install a set of new user accounts based on new passwd fragment # # # ############################################################################### # # # Version 1.2 - Written 09.02.96 by Steffen Beyer # # # ############################################################################### # # # Copyright (C) 1995 by software design & management GmbH & Co. KG # # # ############################################################################### $version = 'version 1.2'; $self = $0; $self =~ s!^.*/!!; if (@ARGV != 1) { warn "\n"; warn "$self $version\n"; warn "\n"; warn "Usage: $self \n"; die "\n"; } umask(0022); $fragment = shift; unless (-f $fragment) { die "$self: can't find passwd file '$fragment'!\n"; } unless (open(PASSWD, "<$fragment")) { die "$self: can't read passwd file '$fragment': $!\n"; } while () { ($user,$passwd,$uid,$gid,$name,$dir,$shell) = split(/:/); if (-e $dir) { warn "$self: home directory '$dir' of user '$user' exists!\n"; next; } unless (($group) = getgrgid($gid)) { warn "$self: can't resolve GID '$gid'!\n"; next; } system("/g/sysadm/sun/bin/new-usr $user $group"); $ENV{'HOME'} = $dir; $ENV{'LOGNAME'} = $user; $ENV{'UID'} = $uid; $ENV{'EUID'} = $uid; $ENV{'USER'} = $user; $ENV{'USERNAME'} = $user; $ENV{'GROUPNAME'} = $group; unless (chdir($dir)) { warn "$self: can't chdir to '$dir': $!\n"; next; } system("/usr/local/bin/mailsetup"); system("chown -R $uid.$gid $dir/*"); system("chown $uid.$gid $dir/.elm"); system("chown -R $uid.$gid $dir/.elm/*"); system("touch /var/spool/mail/$user"); system("chown $uid.$gid /var/spool/mail/$user"); system("chmod 600 /var/spool/mail/$user"); $bootfile = "/s/tftpboot/user/$user"; unless(open(BOOTFILE, ">$bootfile")) { warn "$self: can't create '$bootfile': $!\n"; next; } print BOOTFILE <<"EOF"; user-server=sun mail-server=sun user=$user uid=$uid username=$name maingroup=$group groups= EOF close(BOOTFILE); } close(PASSWD); system("nohup /var/named/cfg-all >/var/named/cfg-all.out 2>/var/named/cfg-all.err &"); system("/g/sysadm/sun/bin/update_users /u/template $fragment"); __END__