tags:

views:

58

answers:

3

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

+1  A: 

Try using the autoexpect tool to record an interactive session, and see what the codes look like.

glenn jackman
+1  A: 

To simplify your life, you might want to setup public key encryption so that you can ssh to the remote host without using a password. Then you can concentrate on testing your software instead of ssh. Google "ssh login without password" for more information. The instructions you will find are straight forward, so don't be afraid.

Hai Vu
A: 

Have you tried \n\n\r?

bitbucket