expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
expect自动交互流程:spawn启动指定进程—expect获取指定关键字—send向指定程序发送指定字符—执行完成退出
简单实例1:vim test.exp##exp是ex开发云主机域名pect脚本的扩展名#!/usr/bin/expect##使用expect解析程序spawn ssh root@192.168.1.5 free ##用spawn执行ssh命令 登录后执行free命令expect “*password” ##匹配获取的字符串send “123456n”##匹配后发送密码给系统,n是换行expect eof ##处理结束expect
实例2:#!/usr/bin/expectspawn ssh root@192.168.1.5 freeexpect {“yes/no”{exp_send “yesr”;exp_continue}
“*password”{exp_send “123456r”}
}expect eof
实例3:#!/usr/bin/expectspawn test.shexpect {“username” {exp_send “testr”;exp_continue}
“*password” {exp_send “123456r”;exp_continue} “*mail*” {exp_send “lidao@163.comr”}}expect eof
expect 常用 命令总结spawn 交互程序开始 后面跟命令或者指定程序expect 获取匹配信息 匹配成功则执行expect后面的程序动作send exp_send 用于发送指定的字符串信息exp_continue在expect中多次匹配就需要用到send_user用来打印输出 相当于shell中的echo
exit退出expect脚本eof expect执行结束 退出set定义变量puts 输出变量set timeout 设置超时时间
实例4:#!/usr/bin/expect
if {$argc !=2 } {puts “expect $argv0 ip command”exit
}
set ip [lindex $argv 0]
set cmd [lindex $argv 1]set password “123456”
spawn ssh root@$ip $cmdexpect {“yes/no” {send “yes/r”;exp_continue}
“*password” {send “$passwordr”}
}expect eof
expect test.exp 192.168.1.5 “free -m”
实例5:ssh秘钥认证生成秘钥ssh-keygen -t dsa -P ” -f ~/.ssh/id_dsa >/dev/null 2>&1vim test.exp
#!/usr/bin/expectif [ $argc != 2 ] {send_user “usage: expect test.exp file hostn”
exit
}set file [lindex $argv 0]set host [lindex $argv 1]set password “123456”
spawn ssh-copy-id -i $file “-p 22 root@$host”expect {“yes/no”{send “yesr”;exp_continue}
“*password” {send “$passwordr”}
}expect eof
vim kk.sh 循环expect脚本#!/bin/bashfor n in 2 3 4 5 6 7doexpect test.exp ~/.ssh/id_dsa.pub 192.168.1.$n
done
expect操作简单 用途明了 易学易用 不过,现在工作中用的不是很多,日常也多是用来辅助其他程序脚本执行的
要求:全网互通[R1][R1]INT E0/0/0[R1-Ethernet0/0/0]ip address 13.1.1.1 24[R1-Ethernet0/0/0]int e0/0/1[R1-Ethernet0/0/1]ip address 12.1.1.1…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。