expect远程批量修改root密码

post by rocdk890 / 2016-11-1 10:58 Tuesday linux技术
  最近公司要求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     user    port    passwd    newpasswd
#------------------------------------------------
192.168.1.62  root    22     123456     456789
192.168.1.63  root    22     123456     456789

ps:
可以看到chpasswd.sh和iplist.txt都在同一文件夹里,只需要把iplist.txt里设置好,就可以批量对服务器进行修改密码了.
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-674.html

标签: ssh 修改 远程 密码 root 批量 expect password change