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的交互模式