#!/opt/bin/perl ############################################################################### # # # Program to install a set of new user accounts based on new passwd fragment # # # ############################################################################### # # # Version 1.0 FI - Written 14.02.96 by Steffen Beyer # # # ############################################################################### # # # Copyright (C) 1995 by software design & management GmbH & Co. KG # # # ############################################################################### $version = 'version 1.0 FI'; $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; } if ($gid =~ /^\d+$/) { unless (($group) = getgrgid($gid)) { warn "$self: can't resolve GID '$gid'!\n"; next; } } else { $group = $gid; } system("/g/sysadm/sun/bin/new-usr $user $group"); unless (chdir($dir)) { warn "$self: can't chdir to '$dir': $!\n"; next; } $> = $uid; system("/usr/local/bin/mailsetup"); $> = 0; system("touch /var/spool/mail/$user"); system("chown $user.sdmfi /var/spool/mail/$user"); system("chmod 600 /var/spool/mail/$user"); } close(PASSWD); system("/g/sysadm/sun/bin/update_users /u/template $fragment"); __END__