create_user.pl - refactored create_user.pl so it can be run with STDIN instead of a file
This commit is contained in:
parent
e71775bf17
commit
3bf739cbe7
@ -19,32 +19,51 @@ my @g;
|
|||||||
|
|
||||||
# Given a username... prompts and creates that user
|
# Given a username... prompts and creates that user
|
||||||
sub create($){
|
sub create($){
|
||||||
my $id = $_[0];
|
my $id;
|
||||||
|
|
||||||
my $fn1 = $account_dir.$id.".ident";
|
my $fn1;
|
||||||
|
|
||||||
my $username;
|
my $username;
|
||||||
my $shell_pref;
|
my $shell_pref;
|
||||||
my $user_email;
|
my $user_email;
|
||||||
my $pub_key;
|
my $pub_key;
|
||||||
|
|
||||||
|
my $p0;
|
||||||
|
|
||||||
|
# Prompts...
|
||||||
|
$p0 = [
|
||||||
|
"Enter username: ",
|
||||||
|
"Enter pubkey: "
|
||||||
|
];
|
||||||
|
|
||||||
|
$fn1 = "";
|
||||||
|
if($_[0]){
|
||||||
|
$id = $_[0];
|
||||||
|
$fn1 = $account_dir.$id.".ident";
|
||||||
|
open IN0, $fn1 or die "could not open file $fn1";
|
||||||
|
$p0 = [ map("", @{$p0}) ];
|
||||||
|
}else{
|
||||||
|
*IN0 = *STDIN;
|
||||||
|
}
|
||||||
|
|
||||||
# read in username and validate
|
# read in username and validate
|
||||||
open FILE, $fn1 or die "could not open file $fn1";
|
printf($p0->[0]);
|
||||||
$username = <FILE>;
|
$username = <IN0>;
|
||||||
chomp $username;
|
chomp $username;
|
||||||
|
|
||||||
if(length($username) > 31 || !($username =~ /^[A-Za-z][A-Za-z0-9]+$/)){
|
if(length($username) > 31 || !($username =~ /^[A-Za-z][A-Za-z0-9]+$/)){
|
||||||
printf("%s has an INVALID username\n", $id);
|
printf("%s is an INVALID username\n", $id);
|
||||||
die ("oh no");
|
die ("oh no");
|
||||||
}
|
}
|
||||||
|
|
||||||
# read in email
|
# read in email
|
||||||
$user_email = <FILE>;
|
$user_email = $_[0] ? <IN0> : "";
|
||||||
chomp $user_email;
|
chomp $user_email;
|
||||||
|
|
||||||
# read in shell and validate
|
# read in shell and validate
|
||||||
{
|
{
|
||||||
my $s0 = <FILE>;
|
my $s0;
|
||||||
|
$s0 = $_[0] ? <IN0> : "SHELL_KSH";
|
||||||
chomp $s0;
|
chomp $s0;
|
||||||
unless($SHELL_ENUM->{$s0}){
|
unless($SHELL_ENUM->{$s0}){
|
||||||
die "invalid shell setting $s0 in file $id.ident";
|
die "invalid shell setting $s0 in file $id.ident";
|
||||||
@ -53,7 +72,8 @@ sub create($){
|
|||||||
}
|
}
|
||||||
|
|
||||||
# read in pub key
|
# read in pub key
|
||||||
$pub_key = <FILE>;
|
printf($p0->[1]);
|
||||||
|
$pub_key = <IN0>;
|
||||||
chomp $pub_key;
|
chomp $pub_key;
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -70,10 +90,10 @@ sub create($){
|
|||||||
system($cmd);
|
system($cmd);
|
||||||
system("echo '".$pub_key."' > /home/$username/.ssh/authorized_keys");
|
system("echo '".$pub_key."' > /home/$username/.ssh/authorized_keys");
|
||||||
system("chmod 711 /home/$username");
|
system("chmod 711 /home/$username");
|
||||||
system("mv $fn1 $fn1.done");
|
system("test -f $fn1 && mv $fn1 $fn1.done");
|
||||||
system("echo $username >> $ul_path");
|
system("echo $username >> $ul_path");
|
||||||
}
|
}
|
||||||
close FILE;
|
close IN0;
|
||||||
}
|
}
|
||||||
|
|
||||||
# MAIN starts here
|
# MAIN starts here
|
||||||
@ -85,14 +105,15 @@ if(!(`id` =~ /uid=0/)){
|
|||||||
|
|
||||||
# Adjusts the relative file paths based on where
|
# Adjusts the relative file paths based on where
|
||||||
# the script runs from
|
# the script runs from
|
||||||
if( `pwd` =~ /perl-script\/?\s*$/){
|
if(`pwd` =~ /perl-script\/?\s*$/){
|
||||||
$working_dir = "../";
|
$working_dir = "../";
|
||||||
$account_dir = $working_dir."req/";
|
$account_dir = $working_dir."req/";
|
||||||
$conf_path = $working_dir."lyadmin.conf.json";
|
$conf_path = $working_dir."lyadmin.conf.json";
|
||||||
$ul_path = $working_dir."user_list.txt";
|
$ul_path = $working_dir."user_list.txt";
|
||||||
printf("%s\n", $conf_path);
|
printf("%s\n", $conf_path);
|
||||||
}elsif(!(join(" ", glob("./*")) =~ /perl-script/)){
|
}elsif(!(join(" ", glob("./*")) =~ /perl-script/)){
|
||||||
die "please run this script with ./perl-script/ as the present working directory";
|
create(0);
|
||||||
|
die "done...\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
# Opens the conf file to read
|
# Opens the conf file to read
|
||||||
@ -117,4 +138,3 @@ close FILE;
|
|||||||
for my $fn (@g){
|
for my $fn (@g){
|
||||||
create($fn);
|
create($fn);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user