[root@logicserver tmp]# vim Delte_user.sh
#!/bin/bash
#
#Delte_User - Automates the
4
step to remove an account
#
#Defin Functions
#
##########################################################
function
get_answer {
unset ANSWER
ASK_COUNT=
0
#
while
[ -z
"$ANSWER"
] #
while
no anwser
is
given.keeip asking
do
ASK_COUNT=$[ $ASK_COUNT +
1
]
#
case
$ASK_COUNT
in
#If user gives no answer
in
time allotted
2
)
echo
echo
"Please answer the question"
echo
;;
3
)
echo
echo
"One last try.....please answer the question."
echo
;;
4
)
echo
echo
"Since you refuse to answer the question.."
echo
"exiting program."
#
exit
;;
esac
#
echo
#
if
[ -n
"$LINE2"
]
then #print
2
lines
echo $LINE1
echo -e $LINE2
" \c"
else
echo -e $LINE1
"\c"
fi
#
# Allow
60
second to answer befor time-out
read -t
60
ANSWER
done
#Do a littel
var
iable clean-up
unset LINE1
unset LINE2
#
} #End of get_answer
function
#
#####################################################################
function
process_answer {
#
case
$ANSWER
in
y|Y|YES|yes|Yes|yEs|yeS|YEs|yES)
#If user answer
"yes"
.
do
noting
;;
*)
#If user answer anything but
"yes"
.exit script
echo
echo $EXIT_LINE1
echo $EXIT_LINE2
echo
exit
;;
esac
#
#Do a little
var
iable clean-up
#
unset EXIT_LINE1
unset EXIT_LINE2
#
} #End of process_answer funtion
#
###################################################################
#End of Function Definitions
#
######################Mian Script#################################
#Get name of User Account to check
#
echo
"Step $1 - Determin User Account name to Delete "
echo
LINE1=
"please enter the username of the user "
LINE2=
"Account you wish to delete from system:"
get_answer
USER_ACCOUNT=$ANSWER
#
#Double check
with
script user that
this
is
the coreect User Account
#
LINE1=
"Is $USER_ACCOUNT the user account "
LINE2=
"You wish to delete from the system?[y/n]"
get_answer
#
#Call process_answer funtion:
# If user answer anything but
"yes"
.exit script
#
EXIT_LINE1=
"Because the account,$USER_ACCOUNT,is not"
EXIT_LINE2=
"The one you wish to delete.we are leaving the script..."
process_answer
#
############################################################################
#
USER_ACCOUNT_RECORD=$(cat /etc/passwd | grep -w $USER_ACCOUNT)
#
if
[ $? -eq
1
] #If the account
is
not found.exit script
then
echo
echo
"Account,$USER_ACCOUNT.not found"
echo
"Leaving the script..."
echo
exit
fi
#
echo
"I found this record:"
echo $USER_ACCOUNT_RECORD
echo
#
LINE1=
"Is this the correct User Account?[y/n]"
get_answer
#
#
#Call process_answer
function
:
# If user answers anything but
"yes"
,exit script
#
EXIT_LINE1=
"Because the account,$USER_ACCOUNT,is not"
EXIT_LINE2=
"The one you wish to delete.we are leaving the script...."
process_answer
#
#####################################################################
#Search
for
any running processes that belong to the User Account
#
echo
echo
"Step #2 - Find process on system beloging to user account"
echo
echo
"$USER_ACCOUNT has the following process running:"
echo
#
ps -u $USER_ACCOUNT #List user processes running.
case
$?
in
1
) #No processes running
for
this
User Account
#
echo
"There are no processes for this account currently running."
echo
;;
0
) #Processes running
for
this
User Account.
#Ask Script User
if
wants us to kill the processes.
#
unset ANSWER
LINE1=
"Would you like me to kill me process(es)?[y/n]"
get_answer
#
case
$ANSWER
in
y|Y|YES|yes|Yes|yEs|yeS|YEs|yES) #If user answers
"yes"
#Kill User Account processes.
#
echo
#
#Clean-up temp file upon signals
trap
"rm $USER_ACCOUNT_Running_Process.rpt"
SIGTERM SIGINT SIGQUIT
#
#List user processes running
ps -u $USER_ACCOUNT > $USER_ACCOUNT_Running_Process.rpt
#
exec < $USER_ACCOUNT_Running_Process.rpt #Make report Std Input
read USER_PROCESS_REC #First record will be blank
read USER_PROCESS_REC
#
while
[ $? -eq
0
]
do
#obtain PID
USER_PID=`echo $USER_PROCESS_REC|cut -d
" "
-f1`
kill -
9
$USER_PID
echo
"Killed process $USER_PID"
read USER_PROCESS_REC
done
#
echo
rm $USER_ACCOUNT_Running_Process.rpt #Remove temp report.
;;
*) #If user answer anything but
"yes"
,
do
not kill
echo
echo
"Will not kill the process(es)"
echo
;;
esac
;;
esac
##########################################################################
#Create a report of all files owned by User Account
#
echo
echo
"Step #3 - Find files on system belonging to user account"
echo
echo
"Creating a report of all files owned by $USER_ACCOUNT."
echo
echo
"It is recommended that you backup/archive these files."
echo
"and then do one of two things;"
echo
" 1)Delete the files"
echo
" 2) Change the files' ownership to a current user account."
echo
echo
"Please wait.This may take a while...."
echo
echo
"Please wait.This may take a while...."
#
REPORT_DATE=`date +%y%m%d`
REPORT_FILE=$USER_ACCOUNT
"_files_"
$REPORT_DATE
".RPT"
#
find / -user $USER_ACCOUNT > $REPORT_FILE
2
> /dev/
null
#
echo
echo
"Report is commlete."
echo
"Name of report: $REPORT_FILE"
echo
"Location of report: `pwd`"
echo
############################################
#Remove User Account
echo
echo
"Step #4 - Remove user account"
echo
#
LINE1=
"Do you wish to remove $USER_ACCOUNT account from system?[y/n]"
get_answer
#
#Call process_answer
function
:
#
if
user answer anythin but
"yes"
.exit script
#
EXIT_LINE1=
"Since you do not wish to remove the user account."
EXIT_LINE2=
"$USER_ACCOUNT at this time.exiting the script... "
process_answer
#
userdel $USER_ACCOUNT #
delete
user account
echo
echo
"User account.$USER_ACCOUNT.has been removed"
echo