linux之腳本管理完全刪除用戶賬號的腳本

#完整刪除用戶賬號
#  !/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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章