I'm new to perl and was wondering if I can get some help. I have a project and I got this code to work...was wondering if anyone can take a look at it for me.
the project calls for these items
- get user input,
- accept command line arguments,
- read and parse a data file,
- use lists, arrays or hashes,
- clean, parse and organize the information in a usable format,
- write the data to a file,
- use control structures and loops,
- include subroutines,
- use Regular Expressions and advanced string functions.
Code:#!/bin/perl -w $ARGVCHK = "N" ; $ARGVUSER = "" ; $DATE = `date "+%m/%d/%Y %H:%M:%S"` ; chomp $DATE ; #loop to check for cmd arg below -r <username> -a <username> -l <username> while (@ARGV) { if ( $ARGV[0] eq "-l" ) { # -l list the users in twdb $ARGVCHK = "L"; shift @ARGV; } # -a Adds a user to twdb from /etc/passwd (needs to chk if usr is already in twdb) elsif ($ARGV[0] eq "-a") { $ARGVCHK = "A"; shift @ARGV ; if ( @ARGV) { $ARGVUSER = $ARGV[0] ; shift @ARGV; } else { print "missing username\n"; exit (1); } } # -r removes a users from twdb elsif ($ARGV[0] eq "-r" ) { $ARGVCHK = "R" ; shift @ ARGV ; if ( @ARGV ) { $ARGVUSER = $ARGV[0] ; shift @ARGV ; } else { print " missing username\n" ; exit (1) ; } } else { print "proj.pl [-l -a -r <username>]\n"; exit (0); } } print " the arg chk is $ARGVCHK\n"; print "the user is $ARGVUSER\n"; if ( $ARGVCHK eq "R" ) { DELUSER() ; } if ( $ARGVCHK eq "A" ) {ADDUSER() ; } sub DELUSER { # start sub $IFEXIST = "N" ; open (TW, "project.users" ); open (LOG, ">>audit.log" ); while ( $tw = <TW> ) { @dbline = split (":" , $tw); if ( $dbline[0] eq $ARGVUSER ) { $IFEXIST = "Y" ; } else { push ( @newtw , $tw ) ; } } close TW ; if ( $IFEXIST eq "Y" ) { open (TW, ">project.users"); print TW @newtw ; print LOG "$DATE deleted $ARGVUSER\n"; } else { print STDERR " This user is not in the db \n"; exit (3); } } sub ADDUSER { $process = `ps -u $ARGVUSER | wc -l`; $process--; chomp( $diskUsuage = `du -sk ` ); $diskUsuage = substr($diskUsuage, 0, 6); print "This is the ADDUSER \n" ; open ( TW , "project.users" ) ; while ( $tw = <TW> ) { @dbline = split (":" , $tw ); if ( $dbline[0] eq $ARGVUSER) { print STDERR" This user is in the db \n"; exit (3); } } close TW ; open ( PWFILE , "/etc/passwd" ) ; open ( TW, ">>project.users" ); open ( LOG, ">>audit.log" ); open ( PD, ">>process.users" ); while ( $line = <PWFILE> ) { @pwl = split ( ":" , $line); if ($pwl[0] eq $ARGVUSER ) { print TW "$pwl[0]:$pwl[4]:$pwl[3]:$pwl[5]\n" ; print LOG "$DATE added $pwl[0]\n"; print PD "$ARGVUSER:$process:$diskUsuage:$pwl[5]\n"; } } close (PWFILE); close (TW); close (LOG); }


Reply With Quote


Bookmarks