shell实现批量登录服务器修改用户密码

shell实现批量登录服务器修改用户密码

脚本

 

#!/usr/bin/env bash
while read line
do
    ip=`echo $line | awk '{print $1}'`
    password=`echo $line | awk '{print $2}'`
    
    /usr/bin/expect <<-EOF
    spawn ssh root@$ip
    set timeout 5
    expect {
        "yes/no" { send "yes\r"; exp_continue }
        "password" { send "$password\r"; }
    }
    expect "*#"
    send "passwd \r"
    expect {
        "password" { send "new_password\r"; exp_continue } #new_password换成你的新密码
        "password" { send "new_password\r"; }
    }
    expect eof
    EOF
done < iplist.txt

 

 

首先你需要把服务器的ip地址和原来的密码分为两列写入iplist.txt文件,这个文件与脚本处于一个目录:

cat iplist.txt

192.168.1.1 123456

192.168.1.2 654321

set timeout 5 设置超时为5秒;

send 的作用就是自动向系统发送命令;

expect 的作用说白了就是send发送命令后预判命令行会出现的结果,根据结果再进行send发送命令;

expect eof 退出expect的交互模式

 

posted @ 2021-07-14 10:18  木木霖  阅读(476)  评论(0编辑  收藏  举报