elsif ($adduserargs == 0) {
#use prompt here...
$givenname = Prompt(
'First Name', '[a-zA-Z]',
'Bad name format (letters only)'
);
$surname = Prompt(
'Last Name', '[a-zA-Z]',
'Bad name format (letters only)'
);
$middle_initial = Prompt(
'Please enter middle inital (if it exists)', '^[a-zA-Z]{0,1}$',
"One or no letters only please"
);
####
sub adduser {
my $username = generate_user_name( @_ );
}
##
##
dark314@somebox:~/boxes/scripts/csl-ldap-01$ perl foo.pl -adduser
First Name: Manuel
Last Name: Castillo
Please enter middle inital (if it exists): F
Use of uninitialized value in concatenation (.) or string at foo.pl line 98, line 3.
Created username:
##
##
dark314@somebox:~/boxes/scripts/csl-ldap-01$ perl foo.pl -adduser Manuel,Castillo,F
Created username: mcastillo
dark314@chavez:~/boxes/scripts/csl-ldap-01$
##
##
if (exists $options{adduser} ) { #if adduser is an argument
my $adduserargs;
{
@adduser = $options{'adduser'};
@adduser = map{split /,/ } @adduser;
$adduserargs = scalar(@adduser);
} #break apart on comma, and find how many args to this option
if ($adduserargs == 2 || $adduserargs == 3){
$givenname = $adduser[0];
$surname = $adduser[1];
$middle_initial = $adduser[2];
#connect_to_ldap();
my $username = adduser($givenname,$surname,$middle_initial);
print "Created username: " . $username . "\n";
#addgroup($username, $username);
}
elsif ($adduserargs == 0) {
#use prompt here...
my $givenname = Prompt(
'First Name', '[a-zA-Z]',
'Bad name format (letters only)'
);
my $surname = Prompt(
'Last Name', '[a-zA-Z]',
'Bad name format (letters only)'
);
my $middle_initial = Prompt(
'Please enter middle inital (if it exists)', '^[a-zA-Z]{0,1}$',
"One or no letters only please"
);
my $username = adduser($givenname,$surname,$middle_initial);
print "Created username: " . $username . "\n";
}
}
##
##
#!/usr/bin/perl
use Getopt::Long; #use getopt - long
use Switch;
use strict;
use warnings "all";
#
# Configuration
#
my $LDAP_SERVER = "csl-ldap-01.inside";
my $LDAP_BASE_DN = "dc=local";
my $DOMAIN = "thecsl.org";
my $MAIL_HOST = "thecsl.org";
my $MAX_USERNAME_LENGTH = 12;
my $MIN_UID = "1000";
#
# Global Variables
#
my $G_LDAP_CONNECTION = "";
#
# Main
#
#
# Global Variables
#
my $givenname = '';
my $surname = '';
my $middle_initial = '';
my @adduser = '';
my %options; #command line arguments...
GetOptions (
\%options,
'adduser:s');
if (exists $options{adduser} ) { #if adduser is an argument
my $adduserargs;
{
@adduser = $options{'adduser'};
@adduser = map{split /,/ } @adduser;
$adduserargs = scalar(@adduser);
} #break apart on comma, and find how many args to this option
if ($adduserargs == 2 || $adduserargs == 3){
$givenname = $adduser[0];
$surname = $adduser[1];
$middle_initial = $adduser[2];
#connect_to_ldap();
my $username = adduser($givenname,$surname,$middle_initial);
print "Created username: " . $username . "\n";
#addgroup($username, $username);
}
elsif ($adduserargs == 0) {
#use prompt here...
my $givenname = Prompt(
'First Name', '[a-zA-Z]',
'Bad name format (letters only)'
);
my $surname = Prompt(
'Last Name', '[a-zA-Z]',
'Bad name format (letters only)'
);
my $middle_initial = Prompt(
'Please enter middle inital (if it exists)', '^[a-zA-Z]{0,1}$',
"One or no letters only please"
);
my $username = adduser($givenname,$surname,$middle_initial);
print "Created username: " . $username . "\n";
#addgroup($username, $username);
}
}
#
# Functions
#
sub adduser {
my $username = generate_user_name( $givenname, $surname, $middle_initial );
#####return $username;
}
#################
## Subs
#################
sub Prompt {
my ( $prompt, $regex, $error ) = @_;
my $result = "";
while ( !$result ) {
print "$prompt: ";
$result = ;
if ( $result !~ /$regex/ ) {
print "$error\n";
$result = "";
}
}
chomp $result;
return $result;
}
sub generate_user_name {
my ( $first, $last, $mi ) = @_;
$first = "\L$first";
$mi = "\L$mi";
$last = "\L$last";
#print "$first\n$mi\n$last\n";
return simple_concat( $first, $last )
|| fi_mi_lastname( $first, $mi, $last )
|| iter_concat( $first, $last )
|| simple_concat( $last, $first )
|| undef;
}
sub simple_concat {
my $first = shift;
my $last = shift;
my $uname = "";
$uname = substr( $first, 0, 1 ) . $last;
$uname = substr( $uname, 0, $MAX_USERNAME_LENGTH );
return $uname unless username_exists($uname);
return undef;
}
sub username_exists {
my $uname = shift;
return getpwnam($uname) ? 1 : undef;
}
sub fi_mi_lastname {
my $first = shift;
my $mi = shift;
my $last = shift;
my $uname;
unless ( $mi eq "" ) {
$uname = substr( $first, 0, 1 ) . substr( $mi, 0, 1 ) . $last;
$uname = substr( $uname, 0, $MAX_USERNAME_LENGTH );
return $uname unless username_exists($uname);
}
return undef;
}
sub iter_concat {
my $first = shift;
my $last = shift;
my $uname;
foreach my $num_letters ( 2 .. length($first) ) {
$uname = substr( $first, 0, $num_letters ) . $last;
$uname = substr( $uname, 0, $MAX_USERNAME_LENGTH );
return $uname unless username_exists($uname);
}
return undef;
}