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
"; exp_continue }
        "password" { send "$password
"; }
    }
    expect "*#"
    send "passwd 
"
    expect {
        "password" { send "new_password
"; exp_continue } #new_password换成你的新密码
        "password" { send "new_password
"; }
    }
    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的交互模式

原文地址:https://www.cnblogs.com/lulin9501/p/15009622.html