shell expect使用方法
Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件(Expect [is a] software suite for automating interactive tools)。使用它系统管理员的可以创建脚本用来实现对命令或程序提供输入,而这些命令和程序是期望从终端(terminal)得到输入,一般来说这些输入都需要手工输入进行的。Expect则可以根据程序的提示模拟标准输入提供给程序需要的输入来实现交互程序执行。甚至可以实现实现简单的BBS聊天机器人。 Expect是不断发展的,随着时间的流逝,其功能越来越强大,已经成为系统管理员的的一个强大助手。Expect需要Tcl编程语言的支持,要在系统上运行Expect必须首先安装Tcl。
从最简单的层次来说,Expect的工作方式象一个通用化的Chat脚本工具。Chat脚本最早用于UUCP网络内,以用来实现计算机之间需要建立连接时进行特定的登录会话的自动化。spawn命令来启动脚本和命令,Chat脚本由一系列expect-send对组成:expect等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。
set timeout设置脚本等Shell返回与expect指定的模式匹配的字符串的时间,如果匹配成功则立即继续执行,如果匹配不到就会阻塞,在超出timeout指定的时间后才继续执行。
timeout默认是10s,如果设置为-1,脚本就要永远等下去。
一个简单的例子,用于自动输入kerberos密码:
#!/usr/bin/expect #source /home/rank/.bash_profile set timeout 10 spawn /usr/bin/kinit can.yu expect "*OPI.COM*" send "111111\r" expect eof
补充:软件开发 , C++ ,