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?

smokinguns
  • 103
  • 1
  • 3

2 Answers2

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]'
EEAA
  • 109,363
  • 18
  • 175
  • 245
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.

Xarses
  • 331
  • 1
  • 5