expect远程批量修改root密码
最近公司要求3个月修改一次所有测试服务器的root密码,一共有11台,我又不想一台一台的去修改,所以单独整了个批量修改密码的脚本.
脚本内容:
cat /root/soft_shell/chpasswd.sh
#!/bin/bash file="iplist.txt" for ip in `awk '/^[^#]/{print $1}' $file`; do port=`awk -v I=$ip '{if(I==$1)print $2}' $file` user=`awk -v I=$ip '{if(I==$1)print $3}' $file` pass=`awk -v I=$ip '{if(I==$1)print $4}' $file` new=`awk -v I=$ip '{if(I==$1)print $5}' $file` expect -c " spawn ssh -p$port $user@$ip set timeout 2 expect { \"(yes/no)\" {send \"yes\r\";exp_continue} \"password:\" {send \"$pass\r\";exp_continue} \"$user@*\" {send \"echo \'$new\' |passwd --stdin $user\r exit\r\";exp_continue} #\"$user@*\" {send \"df -h\r exit\r\";exp_continue} }" done
cat /root/soft_shell/iplist.txt
# ip port user passwd newpasswd
#------------------------------------------------
192.168.1.62 22 root 123456 456789
192.168.1.63 22 root 123456 456789
ps:
可以看到chpasswd.sh和iplist.txt都在同一文件夹里,只需要把iplist.txt里设置好,就可以批量对服务器进行修改密码了.
评论: