有时候有大批量的服务器普通用户需要做删除账号处理,一个个手动删也不太现实,这时候使用shell脚本来处理就方便多了,只需运行脚本输入需要删除的用户名就可以了

下面是shell脚本内容

#!/bin/bash

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...please answer the question."

echo

;;

4)

echo

echo "Since you refuse to answer the question..."

echo "exiting program."

echo

#

exit

;;

esac

#

echo

#

if [ -n "$LINE2" ]

then #打印2行

echo $LINE1

echo -e $LINE2" \c"

else #打印1行

echo -e $LINE1" \c"

fi

#

# 在超时前等待60秒回答

read -t 60 ANSWER

done

# 做一点清理

unset LINE1

unset LINE2

#

} #get_answer 函数结束

#

#####################################################

function process_answer {

#

case $ANSWER in

y|Y|YES|yes|Yes|yEs|yeS|YEs|yES )

# 如果用户回答yes,则不执行任何操作

;;

*)

# 如果用户没有回答yes,则退出脚本

echo

echo $EXIT_LINE1

echo $EXIT_LINE2

echo

exit

;;

esac

#

# 做一点清理

#

unset EXIT_LINE1

unset EXIT_LINE2

#

} # process_answer 函数结束

#

##############################################

# 函数定义结束

#

############# 主脚本 ####################

# 获取要检查的用户帐户的名称

#

echo "Step #1 - Determine User Account name to Delete "

echo

LINE1="Please enter the username of the user "

LINE2="account you wish to delete from system:"

get_answer

USER_ACCOUNT=$ANSWER

#

# 与脚本用户重复检查这是正确的用户帐户

#

LINE1="Is $USER_ACCOUNT the user account "

LINE2="you wish to delete from the system? [y/n]"

get_answer

#

# 响应process_answer 函数

# 如果用户没有回答yes,则退出脚本

#

EXIT_LINE1="Because the account, $USER_ACCOUNT, is not "

EXIT_LINE2="the one you wish to delete, we are leaving the script..."

process_answer

#

################################################################

# 检查用户帐户是否确实是系统上的帐户

#

USER_ACCOUNT_RECORD=$(cat /etc/passwd | grep -w $USER_ACCOUNT)

#

if [ $? -eq 1 ] # 如果找不到帐户,请退出脚本

then

echo

echo "Account, $USER_ACCOUNT, not found. "

echo "Leaving the script..."

echo

exit

fi

#

echo

echo "I found this record:"

echo $USER_ACCOUNT_RECORD

#

LINE1="Is this the correct User Account? [y/n]"

get_answer

#

#

# 响应 process_answer 函数:

# 如果用户没有回答yes,则退出脚本

#

EXIT_LINE1="Because the account, $USER_ACCOUNT, is not "

EXIT_LINE2="the one you wish to delete, we are leaving the script..."

process_answer

#

##################################################################

# 搜索属于该用户帐户的所有正在运行的进程

#

echo

echo "Step #2 - Find process on system belonging to user account"

echo

#

ps -u $USER_ACCOUNT >/dev/null # 用户进程正在运行吗?

#

case $? in

1) # 没有为此用户帐户运行的进程

#

echo "当前没有此帐户的进程正在运行。"

echo

;;

0) # 为此用户帐户运行的进程。

# 询问脚本用户是否希望我们终止进程。

#

echo "$USER_ACCOUNT has the following processes running: "

echo

ps -u $USER_ACCOUNT

#

LINE1="想终止进程吗? [y/n]"

get_answer

#

case $ANSWER in

y|Y|YES|yes|Yes|yEs|yeS|YEs|yES ) # 如果用户回答yes,

# 终止用户帐户进程。

#

echo

echo "进程终止..."

#

# 在变量中列出运行代码的用户进程, COMMAND_1

COMMAND_1="ps -u $USER_ACCOUNT --no-heading"

#

# 在变量中创建终止进程的命令, COMMAND_3

COMMAND_3="xargs -d \\n /usr/bin/sudo /bin/kill -9"

#

#通过管道命令一起终止进程

$COMMAND_1 | gawk '{print $1}' | $COMMAND_3

#

echo

echo "Process(es) killed."

;;

*) # 如果用户回答yes以外的任何问题,不要杀死。

echo

echo "Will not kill the process(es)"

echo

;;

esac

;;

esac

#################################################################

# 创建用户帐户拥有的所有文件的报告

#

echo

echo "Step #3 - 查找属于用户帐户的系统上的文件"

echo

echo "创建所拥有的所有文件的报告 $USER_ACCOUNT."

echo

echo "建议您备份或存档这些文件,"

echo "然后做两件事中的一件:"

echo " 1) 删除文件"

echo " 2) 将文件的所有权更改为当前用户帐户."

echo

echo "请稍等。这可能需要一段时间..."

#

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 "报告已完成."

echo "报告名称: $REPORT_FILE"

echo "获取路径: $(pwd)"

echo

####################################

# Remove User Account

echo

echo "Step #4 - 删除用户帐户"

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="不想删除用户帐户,"

EXIT_LINE2="$USER_ACCOUNT 此时,退出脚本..."

process_answer

#

userdel $USER_ACCOUNT #删除用户帐户

echo

echo "User account, $USER_ACCOUNT, has been removed"

echo

#

exit

来源:智一面运维小编

linux中批量删除用户,Linux shell批量删除用户相关推荐

  1. Linux中安装和使用Translate Shell

    Translate Shell 是一个支持 Google Translate.Bing Translator.Yandex.Translate 和 Apertium 翻译引擎的命令行翻译器,默认使用的 ...

  2. 在linux中的sort命令,linux中sort命令

    功能说明:将文本文件内容加以排序,sort可针对文本文件的内容,以行为单位来排序. 参 数: -b 忽略每行前面开始出的空格字符. -c 检查文件是否已经按照顺序排序. -d 排序时,处理英文字母.数 ...

  3. 网页修改linux命令行,linux中文本修改操作命令linux网页制作 -电脑资料

    在命令模式下可以使用 vi 提供的各种有关命令对文本进行修改,包括对文本内容的删除.复制.取代和替换等, 1. 文本删除/移动 在编辑文本时 ,经常需要删除一些不需要的文本,我们可以用键将输错或不需要 ...

  4. linux中original_如何在 Linux 中整理磁盘碎片

    如何在 Linux 中整理磁盘碎片 转载自: 如何在 Linux 中整理磁盘碎片​linux.cn 有一个神话是 linux 的磁盘从来不需要整理碎片.在大多数情况下这是真的,大多数因为是使用的是优秀 ...

  5. linux中文件链接,关于Linux中文件,链接的一些思考

    在Unix系统中,操作系统为磁盘上的文本与图像,鼠标键盘操作,网络交互等IO操作设计了一组通用API. 使他们被处理的时候可统一用字节流的方式.所以说,除了进程之外,其他的一切均可看做文件. Linu ...

  6. linux中scsi驱动程序,探索 Linux 通用 SCSI 驱动器

    转载:https://www.ibm.com/developerworks/cn/linux/l-scsi-api/#ibm-pcon SCSI 客户机/服务器模型 在主机和存储介质进行通信期间,主机 ...

  7. linux中make命令大全,Linux中的命令 make -f 是什么意思

    二.Makefile的文件名 默认的情况下,make命令会在当前目录下按顺序找寻文件名为"GNUmakefile"."makef ile"."Make ...

  8. linux中sed怎么反选,awk的批量replace功能

    awk的批量replace功能 需求 现在需要替换一个文本 文本内容如下 $cat file MD_D1TS_1_060_I MD_D1TS_1_061_F MD_D1TS_1_062_U MD_D1 ...

  9. linux中查看用户组标识符,Linux用户和组管理

    用户和组管理 目录 1.用户和用户组介绍 2.用户管理 3.组管理 4.用户和组相关文件操作 1.用户和组介绍 在linux中,用户分为管理员和普通用户:管理员为root,普通用户又分为系统用户和登录 ...

  10. linux中文件权限 组,linux中文件权限格式与chmod命令以及用户和用户组的管理

    简单了解一下linux中的文件权限格式与chmod命令 chmod命令:改变文件或者目录的权限 格式:chmod [参数] [] -R 或者--recursive 递归处理,表示将指定目录下的所有文件 ...

最新文章

  1. 北京科技大学天津学院第三届智能车校内赛总决赛完美落幕
  2. vmware中修改ubuntu的分辨率
  3. 关于Excel和Csv导入和导出工具使用
  4. 翻身做主--给自己的软件制作注册码
  5. 面试:Java线程有哪几种状态,它们之间是如何切换的
  6. Kafka单节点单broker的部署和使用
  7. 新华三社招流程_【面试经验|校招】新华三/产品经理
  8. html cursor居中,CSS cursor属性
  9. 聊聊resilience4j的bulkhead
  10. OpenCV算子速查表(持续更新)
  11. Docker镜像下载加速的两种方法
  12. 服装尺寸 html,服装尺寸S、M、L、XL、XXL分别表示的型号大小和释义(完整版)...
  13. 类似中国知网但是搜索英文文献的权威网站有哪些?
  14. 【5G之道】第二十三章:5G无线接入
  15. 静态路由特点及其配置
  16. 红豆 2022年3月16日
  17. 使用css实现一个三角形
  18. 全像素双核激光对焦拍照是个什么厉害玩意儿
  19. 矩阵的三角分解法之LU分解之Doolittle分解
  20. Debian 是什么?(转)

热门文章

  1. 电脑开启后桌面图标不显示
  2. X509 PKCS7 PKCS12
  3. Android前景与未来趋势
  4. 生存分析第四课:Cox Proportional hazards model
  5. 昭阳E43G/K43G升级T9600失败,蓝屏
  6. 支部谈心谈话工作怎么开展?_工作场所“激情”的谈话引发了读书俱乐部期间的热烈聊天
  7. 为什么用格式刷不能复制行距_如何使用格式刷在PowerPoint中复制格式
  8. 第二人生的源码分析(二十)显示人物名称
  9. 淘宝的返利网怎么用_淘宝便宜的方法
  10. zabbix Event acknowledgment事件确认