#!/usr/bin/perl open (LOGFILE, '>> test_replace.txt'); $IN_PASS = 'temp_pass'; # File to be edited print LOGFILE "File being edited---$IN_PASS\n"; # local $^I = '.bak'; # Call for in-place editing; make backups with a .bak suffix $ID = "user1"; # (@PW_LIST) = ('user1' , 'user3'); #print LOGFILE "@PW_LIST\n"; # #foreach ($ID) @PW_LIST { #Loop to change shell if files exists $HOME_DIR = `cat ${IN_PASS} | grep $ID| cut -d: -f6`; $L_ID = `cat ${IN_PASS} | grep $ID`; $L_USER = `cat ${IN_PASS} | grep $ID | cut -d: -f1-6`; print LOGFILE " $L_ID\n"; print LOGFILE " $L_USER\n"; print LOGFILE "Current home directoy for $ID:$HOME_DIR\n"; $GO_TEST1 = "test_file1"; $GO_TEST2 = "test_file2"; # if (( "($HOME_DIR)/($GO_TEST1)") && ("($HOME_DIR)/($GO_TEST2)")) { # verifying both files exists $CURR_SHELL = `cat ${IN_PASS} | grep $ID| cut -d: -f7`; print LOGFILE "Current Shell for $ID: $CURR_SHELL\n"; $NEW_SHELL = "/bin/nologin"; print LOGFILE "Replacing shell for \"$ID\" with $NEW_SHELL.\n"; s?$L_ID?$L_USER:$NEW_SHELL?g; print; } else { print LOGFILE " FAILED: ($HOME_DIR)/($GO_TEST1) and/or ($HOME_DIR)/($GO_TEST2) is missing for ($ID).\n"; } print LOGFILE "Finished\n"; close LOGFILE;