最近要批量修改linux os用户的密码,修改完并且保存下来,密码的规则最好是数字、小写字母、大写字母和特殊符号中的三种,并且长度要够,从而提高用户的安全性和系统的安全
最近要批量修改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/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 aZDvwrT8zg2JsXcU2. 脚本加入的逻辑说明: 前台展示,加超时登录判断
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