expect作为交互式工具,可以在命令或程序执行时,已交互的形式输入执行字符,实现自动化交互通信。
可将expect看作是另一种shell,只不过expect有特有的语法
语法:
spawn执行命令或程序--expect获取匹配的关键字--send发送指定字符进行交互--退出
expxct工具需要提前安装,执行yum -y install expect
场景:需要与多个服务器建立链接后进行 *** 作
#!/usr/bin/expect set ipaddress "xxx.xxx.xxx.xxx" set passwd "password" set name "name" set timeout 30 #设置超时时间 spawn ssh -p port $name@$ipaddress #交互程序开始后面跟命令或者指定程序 expect { "yes/no" {send "yesr";exp_continue} #获取匹配的关键字并对应发送 "password" {send "$passwdr"} #r为回车必须要加 } interact #保持交互状态 expect eof #expect执行结束 退出
场景:批量修改过期密码
#!/bin/bash for i in `cat hostip.txt` do /usr/bin/expect << EOF spawn /usr/bin/ssh root@$i expect { "UNIX password" { send "oldr" } } expect { "New password:" { send "new#r" } } expect { "Retype new password:" { send "newr" } } expect "*]#" send "echo new|passwd --stdin rootr" expect "*]#" send "exitr" expect eof EOF done
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)