摘要:https://www.cnblogs.com/lulin9501/p/15009622.html
摘要2:https://blog.51cto.com/u_13620944/2440856
批量修改密码
#!/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的交互模式
将日期写入文档
#!/bin/bash
ip=$1
#传递参数
user=$2
password=$3
expect <<EOF
set timeout 10
spawn ssh $user@$ip
expect {
"yes/no" { send "yes\n";exp_continue }
"password" { send "$password\n" }
}
#一个交互用一个expect{} 括起来,这个交互就是登陆的
expect "]#" { send "date>>123.txt\n" }
expect "]#" { send "exit\n" }
#退出
expect eof
EOF