最近要批量修改linux os用户的密码,修改完并且保存下来,密码的规则最好是数字、小写字母、大写字母和特殊符号中的三种,并且长度要够,从而提高用户的安全性和系统的安全性。网上找了批量修改用户的脚本,发现密码的规则和长度不符合,然后自己写了一个,并加了逻辑判断,脚本如下。
for i in `cat list`;do ipadd=`echo $i | awk -F "[:]" '{print $1}'` user=`echo $i | awk -F "[:]" '{print $2}'` PASS=$(tr -cd '[:alnum:]' /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:]'
2. 脚本加入的逻辑说明:
前台展示,加超时登录判断
ssh -o COnnectTimeout=5 $ipadd "echo $ipadd $user"
外层的if语句是判断ip是否登录成功,如果登录失败则将登录失败的ip保存在login_fail_list文件中;若登录成功,密码的修改结果保存在success_user.txt,脚本只做了简单的逻辑判断,可按需修改。
3. ip和用户以冒号分割保存在list文件中,如下:
192.168.0.141:zhanghai 192.168.0.141:apche 192.168.0.141:nginx