Linux系统中expect该如何使用?
expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
expect自动交互流程:
spawn启动指定进程--expect获取指定关键字--send向指定程序发送指定字符--执行完成退出。
注意:该脚本能够执行的前提条件是安装了expect
yum install -y expect
expect常用命令总结:
spawn 交互程序开始后面跟命令或者指定程序
expect 获取匹配信息匹配成功则执行expect后面的程序动作
send exp_send 用于发送指定的字符串信息
exp_continue 在expect中多次匹配就需要用到
exit 退出expect脚本
eof expect 执行结束 退出
set 定义变量
puts 输出变量
set timeout 设置超时时间。
直接shell获取C程序的打印输出(如one,two)有难度,这些不是程序返回值。
当然,也可以考虑将C程序输出拷贝一份到临时文件(覆盖写方式),shell通过解析文件内容判断。
#!/bin/shinteract()
{
input=$1
echo $input sleep 1 sync
read ouput <tmp
}
./test | tee tmp &
sleep 2
interact 1
[ "$output" != "one" ] && exit 1
interact 0
[ "$output" != "exit" ] && exit 1
rm -f tmp
exit 0
用&将test程序置于后台运行,这样在程序未结束前,后面的脚本也可以得到执行。
这种通过sleep来控制的方式不是很精准,还是用 Expect 脚本来控制串行 *** 作比较靠谱些。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)