0

All,
EDIT
I want to execute a unix statement in Expect script and get an output without having to include the interact statement.The unix statement outputs rsize value for a process. I haven't programmed in Expect before. This is my code:

 #!/usr/bin/expect set some_host "some host" set Mycmd "top -l 1 -stats pid,rsize,command | grep Process_Name| awk '{print \$2};'" spawn telnet localhost $some_host expect "login:" send "myDevice\r" expect "Password:" send "$password\r" expect "\$" send "$Mycmd\r" interact 

If I don't include the interact statement, I don't get any output. How do I get this to work so that I get the correct rsize value as the output?

3
  • Telnet. shudders. Commented Feb 24, 2012 at 21:59
  • 2
    For one thing I certainly would not use telnet....maybe a keyed login version of ssh to send the command. Commented Feb 24, 2012 at 21:59
  • 1
    Feels like 1992 in here all of a sudden. Commented Feb 24, 2012 at 23:53

2 Answers 2

3

Why not just use the output of ps?

$ ps -p <pid> -o rss | egrep '[0-9]' 

Remotely, you can do this over ssh:

$ ssh user@host ps -p <pid> -o rss | egrep '[0-9]' 
1
  • Thanks @ErikA: I ended up using ssh. Had to set up ssh keys for password-less SSH login. Commented Feb 25, 2012 at 1:43
0

You can use any one of these methods, each has slightly different results.

expect -re "*\n" expect expect "%" 

You should also look at the meaning of match_max which controls how much will be matched.

after the results are caught, you will want to look the results

puts "$expect_out(buffer)" 

see http://en.wikipedia.org/wiki/Expect for some great examples.

1
  • Will definitely try this.. Commented Feb 25, 2012 at 1:43

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.