#!/usr/bin/perl -w use strict; # use diagnostics; use POSIX qw/uname/; use POSIX qw/strftime/; my ($os, $hostname, undef)=POSIX::uname(); my ($host, undef)=split(/\./, $hostname); my $OS = lc($os); my ( $MODE, $USERNAME, $NEWPASS, $APACHECONF, @THINGS ); $MODE = $USERNAME = $NEWPASS = $APACHECONF = "UNDEFINED"; unless ( $ARGV[0] =~ m/-(p|a|d|ha|hd)/ ) { print "500 - DONE - $host - Missing or bad mode\n"; exit; } if ( defined $ARGV[0] ) { $MODE = $ARGV[0] } if ( defined $ARGV[1] ) { $USERNAME = $ARGV[1] } if ( defined $ARGV[2] ) { $NEWPASS = $ARGV[2] } #print "MODE = $MODE\nUSERNAME = $USERNAME\nNEWPASS = $NEWPASS\n"; # Format: MODE => ( COMMAND, ACTION TAKEN, CHECKMODES, ERRORS ) my %cmd=( "-p" => { "COMMAND" => { "linux" => "/usr/local/bin/setpass.expect $USERNAME $NEWPASS", "aix" => "" }, "ACTION" => "Password Changed", "CHECKMODES" => &checkparms(), "ERRORS" => { "$OS:256" => "$USERNAME Does not exist" } }, "-d" => { "COMMAND" => { "linux" => "/usr/sbin/userdel -r $USERNAME", "aix" => "" }, "ACTION" => "Deleted", "CHECKMODES" => &checkparms(),\ "ERRORS" => { "$OS:1536" => "$USERNAME Does not exist" } }, "-a" => { "COMMAND" => { "linux" => "/usr/sbin/useradd $USERNAME && /usr/local/bin/setpass.expect $USERNAME $NEWPASS", "aix" => "" }, "ACTION" => "Added", "CHECKMODES" => &checkparms(), "ERRORS" => { "$OS:2304" => "$USERNAME exists" } }, "-ha" => { "COMMAND" => { "linux" => "/usr/bin/htpasswd -bd $APACHECONF $USERNAME $NEWPASS", "aix" => "" }, "ACTION" => "Added", "CHECKMODES" => &checkparms() }, "-hd" => { "COMMAND" => { "linux" => "/usr/bin/htpasswd -D $APACHECONF $USERNAME", "aix" => "" }, "ACTION" => "Deleted", "CHECKMODES" => &checkparms() } ); if ( $cmd{$MODE}{'CHECKMODES'} == 0 ) { #qx/$cmd{$MODE}{'COMMAND'}/; print "$cmd{$MODE}{'COMMAND'}{$OS}\n"; check_error($?); } else { print "500 - DONE - $host - @THINGS not defined"; } exit; ############### sub check_error ############### { $_=shift; my $err="$OS:$_"; my $msg = "$USERNAME $cmd{$MODE}{'ACTION'}"; $msg = $cmd{$MODE}{'ERRORS'}{$err} if ( defined ($cmd{$MODE}{'ERRORS'}{$err}) ); open (LOGFILE, ">>/var/log/usermaint_.log") or warn "Unable to open logfile\n"; ( $_ == 0 ) ? print "200 - DONE - $host - Sucess ($_) - $msg\n" : print "500 - DONE - $host - Failure ($_) - $msg\n"; my $now = strftime "%m/%d/%Y %H:%M:%S", (localtime); print LOGFILE "$now - $_ - $USERNAME - $msg\n"; close (LOGFILE) or warn "Unable to close logfile\n"; return 1; } ############## sub checkparms ############## { push (@THINGS, "Username") if ( $USERNAME eq "UNDEFINED" ); push (@THINGS, "Password") if ( $NEWPASS eq "UNDEFINED" and $MODE eq "-a" or $MODE eq "-p" or $MODE eq "-ha"); push (@THINGS, "httpd.conf") if ( $MODE eq "-ha" or $MODE eq "-hd" and $APACHECONF eq "UNDEFINED" ); my $return_val = ( scalar(@THINGS) == 0 ) ? return 0 : return 1; } __END__