#!/usr/bin/perl use warnings; use strict; my $WORKING_DIR = "/home/gashapwn/lyadmin/"; my $ACCOUNT_DIR = "test/"; my $FULL_PATH = "$WORKING_DIR$ACCOUNT_DIR"; my $SHELL_ENUM = { "SHELL_BASH" => "/usr/local/bin/bash", "SHELL_KSH" => "/bin/ksh" }; my @g; sub create($){ my $id = $_[0]; my $fn1 = $FULL_PATH.$id.".ident"; my $fn2 = $FULL_PATH.$id.".pub"; my $username; my $shell_pref; my $user_email; open FILE, $fn1 or die "could not open file"; $username = ; chomp $username; $user_email = ; chomp $user_email; { my $shell_var = ; chomp $shell_var; $shell_pref = $SHELL_ENUM->{$shell_var}; } if(length($username) > 31 || !($username =~ /^[A-Za-z][A-Za-z0-9]+$/)){ printf("%s has an INVALID username\n", $id); die ("oh no"); } { my $cmd; $cmd = "useradd -m -s " . $shell_pref . " " . $username; printf("Y/N is this command OK?: %s\n", $cmd); if( ne "Y\n"){ die "invalid characters?!!"; } system($cmd); #system("mkdir /home/$username/.ssh"); #system("chmod 700 /home/$username/.ssh"); system("cat $FULL_PATH/$id.pub > /home/$username/.ssh/authorized_keys"); #system("mv $FULL_PATH/$id.pub /home/$username/.ssh/authorized_keys"); #system("chmod 600 /home/$username/.ssh/authorized_keys"); system("chmod 711 /home/$username"); #system("chown $username:$username /home/$username/.ssh"); #system("chown $username:$username /home/$username/.ssh/authorized_keys"); system("rm $FULL_PATH/$id.ident"); system("rm $FULL_PATH/$id.pub"); } close FILE; } @g = glob("$FULL_PATH*"); @g = map { s/.*\/([^\/]*).pub$/$1/; $_ } grep {$_ =~ /pub$/} @g; for my $fn (@g){ create($fn); }