我有一个基于文本的菜单运行在远程Linux主机上。我正在使用期望ssh到这个主机,并想弄清楚如何与菜单进行交互。交互涉及向上,向下箭头键和使用回车键。例如,如何自动化测试基于文本的菜单
Disconnect
Data Collection >
Utilities >
Save Changes
当您进入系统Disconnect突出显示。所以只需按两次输入即可断开与系统的连接。第二个确认断开。
下面的代码将SSH入我的系统,并调出菜单。如果我删除期望的eof并尝试发送“\ r”以为这会选择Disconnect菜单选项,则会出现以下错误:“write()未能写入任何内容 - 将会睡眠(1)并重试...”
#!/usr/bin/expect
set env(TERM) vt100
set password abc123
set ipaddr 162.116.11.100
set timeout -1
match_max -d 100000
spawn ssh [email protected]$ipaddr
exp_internal 1
expect "*password:*"
send -- "$password\r"
expect "Last login: *\r"
expect eof
我已经看过virterm和term_expect的例子,但无法弄清楚如何调整它们为我工作。如果有人能指出我正确的方向,我将不胜感激。我需要知道的是,我可以与基于文本的菜单系统进行交互,以及执行此操作的正确方法是什么,如果存在任何示例,示例会很棒。
感谢, -reagan
你在什么操作系统下运行这个代码? – bta 2010-04-23 20:31:44
你尝试过产生一个shell而不是ssh。然后通过发送'ssh \ r'命令等来调用ssh。这就是我为控制我的项目的集成测试的tmux所做的事情 – arainone 2016-03-20 00:50:08