CentOS脚本:批量修改普通用户的密码

发布者:站点默认
2012/07/3 浏览数(2,341) 分类:CentOS/RockyLinux CentOS脚本:批量修改普通用户的密码已关闭评论

从 /etc/passwd 中逐条读取“ID不小于500”、“shell不是/sbin/nologin”的用户名后依次修改其密码为其用户名的base64码。

部分系统(Debian/Suse等)不支持“–stdin”参数可能会导致修改失败,在使用之前请查看passwd命令的帮助信息看是否支持此参数。

#!/bin/bash
# 重置所有ID大于500的用户的密码
userlist=$(awk 'BEGIN{FS=":"};\
   {\
      if($3 >= 501 && $7 !~ "/sbin/nologin")\
         printf $1"\n"}'\
   /etc/passwd)
for i in $userlist
do
   echo "正在修改[ "$i" ]的密码:"
   #echo `echo $i | base64`| passwd $i --stdin
   # 正式使用时将上边的注释取消,密码被设置为用户名的base64码
done

如果需要交互操作可以将以下部分加到代码中的相应位置:

echo "警告:1、此脚本将重置所有普通用户的密码!"
echo "   2、ID不小于500的用户都将受到影响"
echo "   3、使用 base64 生成密码"
echo "确定执行?[Y/N]"
read BEGIN
if [ "$BEGIN" != "Y" ]; then
   echo "您没有输入“Y”脚本已取消。"
   exit;
fi
# 这之后可以放具体的执行代码

完整示例:

#!/bin/bash
echo "警告:1、此脚本将重置所有普通用户的密码!"
echo "   2、ID不小于501的用户都将受到影响"
echo "   3、使用 pwdMaker.sh 的计算密码"
echo "   4、作者:user@upall.cn"
echo "   5、日期:2012-07-03 10:06:34 [2]"
echo "确定执行?[Y/N]"
read BEGIN
if [ "$BEGIN" != "Y" ]; then
   echo "您没有输入“Y”脚本已取消。"
   exit;
fi
# 以上代码用于提示,可以不要,下边是核心代码
userlist=$(awk 'BEGIN{FS=":"};\
   {\
      if($3 >= 501 && $7 !~ "/sbin/nologin")\
         printf $1"\n"}'\
   /etc/passwd)
for i in $userlist
do
   echo "正在修改[ "$i" ]的密码:"
   echo `pwdMaker.sh $i`| passwd $i --stdin
done

<完>

点击返回顶部
  1. 留言
  2. 联系方式