Назад | Перейти на главную страницу

Получить вывод команды unix 'top' из сценария Expect

Все,
РЕДАКТИРОВАТЬ
Я хочу выполнить оператор unix в сценарии Expect и получить результат без необходимости включать оператор взаимодействия. Оператор unix выводит значение rsize для процесса. Раньше я не программировал на Expect. Это мой код:

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

Если я не включу оператор взаимодействия, я не получу никаких результатов. Как мне заставить это работать, чтобы на выходе я получал правильное значение rsize?

Почему бы просто не использовать вывод ps?

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

Удаленно вы можете сделать это через ssh:

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

Вы можете использовать любой из этих методов, каждый из которых дает несколько разные результаты.

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

Вы также должны посмотреть на значение match_max который определяет, сколько будет совпадений.

после того, как результаты будут пойманы, вы захотите посмотреть результаты

puts "$expect_out(buffer)"

видеть http://en.wikipedia.org/wiki/Expect для отличных примеров.