使用shell脚本删除系统用户

#!/bin/bash
#
#delete_user - Automates the 4 steps ro remove an account
#
#######################################
#   Define Functions
#######################################

function get_answer
{
	unset ANSWER
	ASK_COUNT=0
	while [ -z "$ANSWER" ]
	do
		ASK_COUNT=$[$ASK_COUNT+1]
		case $ASK_COUNT in
		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 "existing program"
			echo
			exit
			;;
		esac
		
		echo
		if [ -n "$LINE2" ];then
			echo $LINE1
			echo -e $LINE2 " \c"
		else
			echo -e $LINE1 " \c"
		fi
		read -t 60 ANSWER
	done
	unset LINE1
	unset LINE2

}

function process_answer
{
	case $ANSWER in
	y|Y|yes|Yes|yEs|yeS|YEs|YES|yES)
		;;
	*)
		echo
		echo $EXIT_LINE1
		echo $EXIT_LINE2
		echo
		exit
		;;
	esac

	unset EXIT_LINE1
	unset EXIT_LINE2 
} 

####################################
#  End of function definations
####################################
##########  Main Scripts###########

echo "Step #1 - Determine 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 correct User Account

LINE1="Is $USER_ACCOUNT the user account"
LINE2="you wish to delete from the system?[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

#####################################################
# check that USER_ACCOUNT is really an account on the system
#
USER_ACCOUNT_RECORD=$(cat /etc/passwd | grep -w $USER_ACCOUNT)
if [ $? -eq 1 ];then
	echo
	echo "Account,$USER_COUNT,not found"
	echo "Leaving the script..."
	echo
	exit
fi

echo
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 belonging to user account"
echo
echo "$USER_ACCOUNT has the following processes running:"
echo
ps -u $USER_ACCOUNT
case $? in 
1)
	echo "There are no processes for this account currently running."
	echo
	;;
0)
	unset ANSWER
	LINE1="Would you like me to kill the process(es)[y/n]"
	get_answer
	case $ANSWER in
	y|Y|yes|YES|Yes|yEs|yeS|YEs|yES)
		echo
		trap "rm $USER_ACCOUNT_Running_Process.rpt" SIGTERM SIGINT SIGQUIT
		ps -u $USER_ACCOUNT > &USER_ACCOUNT_Running_Process.rpt

		exec < $USER_ACCOUNT_Running_Process.rpt
		
		read USER_PROCESS_REC
		read USER_PROCESS_REC
		
		while [ $? -eq 0 ]
		do
			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
		;;
	*)
		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 recmmended 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 my 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 complete."
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's account from system?[y/n]"
get_answer

EXIT_LINE1="Since you do NOT wish to remove the user account,"
EXIT_LINE2="$USER_ACCOUNT at this time,existing th escript..."
process_answer

userdel $USER_ACCOUNT
echo
echo "User Account,$USER_ACCOUNT,has been removed"
echo



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值