批量删除用户--Shell脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量删除用户--Shell脚本相关的知识,希望对你有一定的参考价值。
#!/bin/bash # #User : Mobanche #Date : 2017-7-17 #Work : Delete User # ############################################# # Define Function # ############################################# # 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 ...olease answer the question" echo ;; 4) echo echo "Since you refuse to answer the question ...." echo "exiting scripts" echo exit ;; esac # echo # if [ -n "$LINE2" ] then echo $LINE1 echo -e $LINE2 " \c" else echo -e $LINE1" \c" fi #################################################### # Allow 60 seconds to answer before time-out # #################################################### read -t 60 ANSWER done ################### clean up #### ################# unset LINE1 unset LINE2 } # function process_answer { # case $ANSWER in y|Y|YES|yes|Yes|yEs|yeS|YEs|yES ) ####if user answer "yes",do nothing ###### ;; *) # If user answers anything but "yes" , exit script # echo echo $EXIT_LINE1 echo $EXIT_LINE2 echo exit ;; esac # ###################################################### # Do a little variable clean-up # ###################################################### unset EXIT_LINE1 unset EXIT_LINE2 # } ########################################################### # End of Function Definitions # ########################################################### # # ########################################################## ################### Main scripts #################### ########################################################## # echo "Step #1 -Determine User Account name ti Delete" echo LINE1="Pleaser enter the username of the user " LINE2="Account you wash to delete from system :" get_answer USER_ACCOUNT=$ANSWER # # Double check with script user that this is the acorrect User Account # LINE1="Is $USER_ACCOUNT the user account " LINE2=" You wash to delete from the system? [y/n]" get_answer # #Call process_answer funtion : # # if user answers anything but "yes" , exit script # EXIT_LINE1="Becase the account, $USER_ACCOUNT, is not" EXIT_LINE2="The one you wish to delete, we are leaving the scripts" 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_ACCOUNT. not fount." echo "Leacing the script ....." echo exit fi # echo echo "T fount this record:" echo $USER_ACCOUNT_RECORD # 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="Becauser 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 # ps -u $USER_ACCOUNT > /dev/null # 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 # echo "$USER_ACCOUNT has the following processes running :" echo ps -u $USER_ACCOUNT # LINE1="Would you like me to kill the peocess(es)? [y/n]" get_answer # case $ANSWER in y|Y|YES|yes|Yes|yEs|yeS|YEs|yES ) echo echo "Killing off process(es)" # # List user process running code in variable,COMMAND_1 COMMAND_1="ps -u $USER_ACCOUNT --no-heading" # #Create command to kill process in variable,COMMAND_3 COMMAND_3="xargs -d \\n /usr/bin/sudo /bin/kill -9" # #Kill processes via piping commands together $COMMAND_1 |gawk ‘{print $1}‘ | $COMMAND_3 # echo echo "Will not kill the process(es)" echo ;; *) #If user answers any 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 ......" # 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="Remove $USER_ACCOUNT‘s account from system? [y/n]" get_answer # #Call process_answer function : # if user answers anything but "yes" ,exit script # EXIT_LINE1="Since youd i not wish to remove the user account" EXIT_LINE2="$USER_ACCOUNT at this time,exiting the script ..." process_answer # # userdel $USER_ACCOUNT | rm -rf /home/$USER_ACCOUNT echo echo "User account , $USER_ACCOUNT, has been removed" echo # exit
本文出自 “末班车” 博客,请务必保留此出处http://blxueyuan.blog.51cto.com/9673381/1964341
以上是关于批量删除用户--Shell脚本的主要内容,如果未能解决你的问题,请参考以下文章