#!/usr/bin/perl -T -I/h/COE/lib -w -U #- the -U flag is used to overcome insecure warning on mkdir use strict; use Coe; my $VERSION="1.1.4.1"; if (@ARGV == 0) { &useage; } sub useage { print "Useage: $0 {--username username} {--fullname fullname} ". "{--uid uid} {--group group} {--password password}" . "{--shell shell} {--home home} {--scope scope}\n";exit 1; } my $arg1; my $flag="false"; my $fullname="dummy"; my $home="dummy"; my $group="dummy"; my $other_groups="dummy"; my $password="dummy"; my $scope="local"; my $shell="/bin/csh"; my $uid="dummy"; my $username="dummy"; my $gid; my $dir; my $dir_mode; my $profile; my $pscope; my @command; my @p; while (@ARGV > 0 ){ $arg1=cleanString(shift,1); if ("$arg1" eq "-h") { print "HELP\n"; exit; } elsif ("$arg1" eq "-H") { print "HELP\n"; exit; } elsif ("$arg1" eq "-V") { print "VERSION: $VERSION\n"; exit; } elsif ("$arg1" eq "--username") { $username=cleanString(shift,1); print "username: $username\n"; } elsif ("$arg1" eq "--fullname") { $fullname=cleanString(shift,1); print "fullname: $fullname\n"; } elsif ("$arg1" eq "--uid") { $uid=cleanString(shift,1); print "uid: $uid\n"; } elsif ("$arg1" eq "--group") { $group=cleanString(shift,1); print "group: $group\n"; } elsif ("$arg1" eq "--password") { # there are some special chars illegal here $password=cleanString(shift,3); print "password: $password\n"; } elsif ("$arg1" eq "--scope") { $scope=cleanString(shift,1); print "scope: $scope\n"; } elsif ("$arg1" eq "--shell") { $shell=cleanString(shift,3); print "shell: $shell\n"; } elsif ("$arg1" eq "--home") { $home=cleanString(shift,3); print "home: $home\n"; } elsif ("$arg1" eq "--other_groups") { # comma delimited, no white space $other_groups=cleanString(shift,1); } } # --+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----| # do simple sanity checks # --+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----| if ("$username" eq "dummy" || "$uid" eq "dummy" || "$group" eq "dummy") { &useage; } # --+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----| # define some stuff # --+----|----+----|----+----|----+----|----+----|----+----|----+----|----+----| if ("$home" eq "dummy") { $home=coeFileConv "COE_USER/$scope/$username/Scripts"; } #if ("$password" eq "dummy") { # $password="coe4321"; #} #if ("$profile" =~ /:/) { #$profile=$_; #@p=split(":"); #$pscope=$p[1]; #} #- identify the mandatory arguments if ("$fullname" ne "dummy") { @command=("/usr/bin/sudo", "/usr/sbin/useradd", "-u", $uid, "-g", $group, "-d", $home, "-s", $shell, "-c", $fullname); } else { @command=("/usr/bin/sudo", "/usr/sbin/useradd", "-u", $uid, "-g", $group, "-d", $home, "-s", $shell, "-c", $username); } #- add the optional arg and the final arg which is new user name if ("$other_groups" ne "dummy") { $command[12]="-G"; $command[13]=$other_groups; $command[14]=$username; } else { $command[12]=$username; } #foreach (<@command>) {print "$_ ";} #print "\n"; coeRun (@command); # only make directores for users with shells if ("$shell" ne "/bin/false" && "$username" ne "") { $gid=cleanString(getgrnam($group),3); #$gid=$group; $dir_mode=0750; $dir=coeFileConv "COE_USER/$scope/$username"; #mkdir ($dir, $dir_mode); mkdir ($dir); $dir=coeFileConv "COE_USER/$scope/$username/Scripts"; mkdir ($dir); $dir=coeFileConv "COE_USER/$scope/$username/data"; mkdir ($dir); $dir=coeFileConv "COE_USER/$scope/$username"; coeRun("/usr/bin/sudo", "/bin/chmod", "-R", "750", "$dir"); coeRun("/usr/bin/sudo", "/bin/chown", "-R", "$username:$group", "$dir"); } # set the password if ("$password" ne "dummy") { coeRun("COE_COMP/OS/bin/OS_autopasswd", "$username", "$password"); } |