编写删除用户脚本(交互)
作者:bin脚本如下
function get_answer { unset ANSWER while [ -z $ANSWER ] do echo -e $1; read -t 10 ANSWER done } function process_answer { case $ANSWER in y|Y|yes|YES) return 0 ;; *) echo "Please enter y|Y|yes|YES"; return -1;; esac } function check_name { USER_COUNT_RECODE=$(cat /etc/passwd | grep -w $1) if [ -z $USER_COUNT_RECODE ] then return -1; else return 0; fi } function go { #检查当前是否是root用户 if [ "root" != $(whoami) ] then echo echo "Please run this script with root" exit; fi #获取用户输入的名称 get_answer "Please enter delete name of the user:\c" USERNAME=$ANSWER #检查用户是否存在 check_name $USERNAME if [ $? -eq 0 ] then echo -e "this is the account record:\n" echo -e $USER_COUNT_RECODE."\n" else echo "can not find this account '$ANSWER' from system"; go; fi #确认是否是这个用户 get_answer "Is this the correct User Account ?[y/n]" process_answer if [ $? -ne 0 ] then go; fi #删除用户进程 if [ -z $(ps -u $USERNAME --no-heading|gawk '{print $1}'|xargs -d \\n /bin/kill -9) ] then echo "process killed" else go; fi #整理用户文件 echo "start to find file of $USERNAME" find / -user $USERNAME>$USERNAME"_File.rpt" 2>/dev/null & while [ 1 ] do job=$(jobs | gawk '!/Running/{print 0}') if [ "$job" == "0" ] then break fi echo -e ".\c"; sleep 0.5; done echo #最后一次询问是否删除用户 get_answer "Remove $USERNAME account from system?[y/n]" process_answer if [ $? -eq 0 ] then userdel $USERNAME echo echo "User account $USERNAME has been removed" exit; fi go; } go