如何自动测试基于文本的菜单

时间:2010-03-16 22:01:35

标签: tcl expect

我在远程Linux主机上运行了基于文本的菜单。我正在使用期望ssh到这个主机,并想弄清楚如何与菜单进行交互。交互涉及向上,向下和使用输入和后退箭头键。例如,

Disconnect
Data Collection >
Utilities >
Save Changes

进入系统时,突出显示“断开连接”。因此,只需按两次输入即可断开与系统的连接。第二次输入确认断开连接。

以下代码将进入我的系统并调出菜单。如果我删除期望的eof并尝试发送“\ r \ n”,认为这会选择Disconnect菜单选项,我会收到以下错误:“write()无法写入任何内容 - 将睡眠(1)并重试...”< / p>

#!/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 root@$ipaddr
exp_internal 1
expect "*password:*"

send -- "$password\r"
expect "Last login: *\r"

expect eof

我查看了virterm和term_expect示例,但无法弄清楚如何调整它们以便为我工作。如果有人能指出我正确的方向,我会非常感激。我需要知道的是,我可以与基于文本的菜单系统进行交互吗?这样做的正确方法是什么,如果有任何存在的例子会很棒。

感谢, -reagan

3 个答案:

答案 0 :(得分:1)

尝试使用autoexpect工具记录交互式会话,并查看代码的外观。

答案 1 :(得分:1)

为了简化您的生活,您可能需要设置公钥加密,以便您可以在不使用密码的情况下ssh到远程主机。然后你可以集中精力测试你的软件而不是ssh。谷歌“没有密码的ssh登录”获取更多信息。你会发现说明是直截了当的,所以不要害怕。

答案 2 :(得分:0)

你试过\ n \ n \ r?