参考:
http://www.cnblogs.com/lzrabbit/p/4298794.html
expect 是 linux 系统中可以和子进程进行交互的一个命令,使用它可以做一些自动化工作。python 中也有一个模块 pexpect,提供了类似的功能。
例如:使用 ssh 登陆需要输入密码,可以使用 expect 代替手工输入。
例如:使用 passwd 修改账户密码,也可以使用 expect 代替。
expect 用多种执行方式,交互式,执行文件,执行命令。
1. 交互式 在命令行输入 expect 进入交互式
常用命令
send 发送字符串到子进程或者当前进程, 注意要最后要有 \ n 作为结束
expect 期望的字符串
spawn 开启一个子进程
interact
2. 将 expect 命令写入文件中,执行该文件
expect 最常用的语法是来自 tcl 语言的模式 - 动作
多分支,匹配到字符串,执行后面的动作。
- expect {
- "hi" {
- send "You said hi\n"
- }
- "hello" {
- send "Hello yourself\n"
- }
- "bye" {
- send "That was unexpected\n"
- }
- }
#!/usr/bin/expect -f
set ipaddr "192.168.16.222"
set passwd "yourpasswd"
spawn ssh root@$ipaddr #spawn 开启一个子进程执行命令。
# expect 按顺序执行,大括号是匹配到相应模式,执行相应命令。
expect {
"(yes/no)?" {
send "yes\n"
expect "assword:" {send"$pasword\n"}
}
"assword:" {
send "$password\n"
}
}
3. 使用 - c 参数直接在命令行中执行
- expect - c'expect "dddd" {
- send "dddd"
- }
来源: