linux之脚本管理完全删除用户账号的脚本

时间:2021-01-18 16:17:56

#完整删除用户账号
#  !/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