#完整删除用户账号
# !/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
本文出自 “笨笨的笨笨2号” 博客,请务必保留此出处http://zhenjieli.blog.51cto.com/4080312/1049139