我有一个在远程 Linux 主机上运行的基于文本的菜单。我正在使用期望 ssh 进入该主机,并想弄清楚如何与菜单交互。交互包括向上、向下箭头以及使用回车键和回车键。例如,
Disconnect
Data Collection >
Utilities >
Save Changes
当您进入系统时,断开连接被突出显示。因此,只需按两次 enter 即可断开与系统的连接。第二次进入确认断开连接。
以下代码将 ssh 进入我的系统并调出菜单。如果我删除期望 eof 并尝试发送“\r”,认为这会选择“断开连接”菜单选项,我会收到以下错误:“write() 无法写入任何内容 - 将 sleep(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 root@$ipaddr
exp_internal 1
expect "*password:*"
send -- "$password\r"
expect "Last login: *\r"
expect eof
我查看了 virterm 和 term_expect 示例,但无法弄清楚如何调整它们以适合我。如果有人能指出我正确的方向,我将不胜感激。我需要知道的是我可以与基于文本的菜单系统进行交互吗?这样做的正确方法是什么,如果有的话,例子会很棒。
谢谢,-里根