expect是一种基于TCL,能与交互式程序进行“可程序化”会话的脚本语言,是一种可以提供“分支和嵌套结构”来引导程序流程的解释型脚本语言。
expect由一系列expect-send对组成:expect等待输出中输出特定的字符,然后发送特定的响应。
安装expect:sudo apt-get install expect
expect相关软件包版本有多个,如expect-tcl8.3、expectk、expect-dev等,可根据自身需求选择安装。
(文中涉及的例子请参考 http://lhq1013.iteye.com/blog/907759)
一、示例:
#!/usr/bin/expect
spawn sudo -s
expect "password: "
send "vmkid\r"
expect "~# "
expect eof
解释:首行“#!“声明此为expect脚本,具有可执行权限,路径需正确指明Expect解释程序的位置。
“spawn"该命令用来来启动脚本和命令的会话,这里启动的是sudo命令,实际上命令是以衍生子进程的方式来运行的。
“expect"对执行command后的输出进行匹配检测,可使用正则表达式和通配符等。
“send”用例发送command。
“expect eof"检测到文件结尾,退出。
二、语法与需注意的点
脚本都有相似之处,Expect是基于TCL的,有以下几个地方需要注意:
1)“{”与