最近要批量修改linux os用户的密码,修改完并且保存下来,密码的规则最好是数字、小写字母、大写字母和特殊符号中的三种,并且长度要够,从而提高用户的安全性和系统的安全性。网上找了批量修改用户的脚本,发现密码的规则和长度不符合,然后自己写了一个,并加了逻辑判断,脚本如下。
for i in `cat ips`;do ipadd=`echo $i | awk -F "[:]" '{print $1}'` user=`echo $i | awk -F "[:]" '{print $2}'` PASS=$(tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1|head -c 16) success=success_user.txt fail=fail_user.txt tmp_result=tmp.txt ssh -o ConnectTimeout=5 $ipadd "echo $ipadd $user" if [ $? -eq 0 ];then ssh $ipadd "echo $PASS |passwd --stdin $user &>/dev/null" ssh $ipadd "chage -l $user|grep 'Last password change'|awk '{print \$NF}'" >$tmp_result if [ $(cat ${tmp_result}) -eq 2021 ];then echo "$ipadd $user $PASS" >> $success else echo "$ipadd $user $PASS" >> $fail fi else echo "$ipadd $user" >> ./login_fail_list fi done
简要说明:
1. 密码修改结果展示:
[root@localhost ~]# tr -cd '[:alnum:]' < /dev/urandom | fold -w30 | head -n1|head -c 16 aZDvwrT8zg2JsXcU
2. 登陆失败的机器列表在login_fail_list文件中,密码的修改结果保存在success_user.txt,脚本只做了简单的逻辑判断,可按需修改。