how to automate the testing of a text based menu

Posted by Reagan Penner on Stack Overflow See other posts from Stack Overflow or by Reagan Penner
Published on 2010-03-16T22:01:35Z Indexed on 2010/03/16 22:41 UTC
Read the original article Hit count: 235

Filed under:
|

Hi there,

I have a text based menu running on a remote Linux host. I am using expect to ssh into this host and would like to figure out how to interact with the menus. Interaction involves arrowing up, down and using the enter and back arrow keys. For example,

Disconnect
Data Collection >
Utilities >
Save Changes

When you enter the system Disconnect is highlighted. So simply pressing enter twice you can disconnect from the system. Second enter confirms the disconnect.

The following code will ssh into my system and bring up the menu. If I remove the expect eof and try to send "\r" thinking that this would select the Disconnect menu option I get the following error: "write() failed to write anything - will sleep(1) and retry..."

#!/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

I have looked at the virterm and term_expect examples but cannot figure out how to tweak them to work for me. If someone can point me in the right direction I would greatly appreciate it. What I need to know is can I interact with a text based menu system and what is the correct method for doing this, examples if any exist would be great.

thanks, -reagan

© Stack Overflow or respective owner

Related posts about tcl

Related posts about expect