本文共 1581 字,大约阅读时间需要 5 分钟。
#完整删除用户账号 # !/bin/bash #如果运行命令事未指定需要删除的用户账号,则返回提示信息并退出 if [ -z $1 ] then echo "please enter a username !" # 否则统计passwd文件中指定用户的记录数 else n=$(cat /etc/passwd | #列出passwd文件的记录数 grep $1 | #过滤文件内容 wc -l ) #统计行数 #如果需要删除的用户账号在系统中不存在,则返回提示信息并退出 if [ $n -lt 1 ] then echo "The user dose not exit !" #否则杀死用户对应的进程并删除该用户的所有文件 else echo "Kill the folowing process:" echo pid=" " #情况pid变量 #获取用户已登录的所有tty for i in 'who | grep $1 | awk '{printf ("%s\n",$2)}'' do
#获取用户运行的所有进程的进程号 pid=$pid" "$(ps -ef| #列出所有进程 grep $i | #过滤进程信息 grep -v grep | #过滤grep进程 awk '{print $2}') #只显示进程id ps -ef | #列出所有进程 grep $i | #过滤进程信息 grep -v grep #过滤grep进程 done echo #提示确定是否杀死相关用户进程 echo "Are you sure? [y/n]" read ans #读取用户输入 if ["$ans"="y"] #如果用户输入为Y则进行下一步 then #如果用户没有进程在运行的话,返回提醒消息 if [ -z $pid ] then echo "There is no process to killed !" #否则杀掉相关进程 else kill -9 $pid fi echo echo "Finding all of the files own by " $1 #把用户拥有的所有文件和目录的清单保存到files.list文件中 find /-depth -user $1 2 > /dev/null >files.list echo #提示用户确认是否删除所有文件和目录 echo "all of files own by "$1"have been list in the file 'files.list', are you sure you want to delate all of the files ?[y/n]" read ans #如果用户输入“y” if ["$san"="y"] then echo echo "Removing all of the files own by" $1 #删除用户的所有文件和目录 find / -depth -user $1 -exec rm -RF {} \; 2> /dev/null echo echo "All of the files have been removed !" fi echo echo "Removig the user " $1 #删除用户账号 sleep 5 #休眠5秒 userdel $1 echo #提示用户已经被删除 echo " The user has been removed !" fi fi fi #上述代码保存为rmuser.sh #脚本运行格式为: ./rmuser.sh 用户名 #例如删除lily用户 # ./rmuser.sh zhangsan
转载于:https://blog.51cto.com/zhenjieli/1049139