Получите вывод команды unix 'top' из ожидаемого скрипта - PullRequest
0 голосов
/ 25 февраля 2012

All
Я хочу выполнить оператор Unix в сценарии ожидаемого. Оператор Unix выводит значение rsize для процесса. Я не программировал в ожидании раньше. Это мой код:

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

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

Ответы [ 2 ]

0 голосов
/ 17 марта 2014

Можно ли получить выходные данные без добавления оператора "взаимодействовать"

Да, это так.Другие операторы, которые ждут вывода, тоже подойдут;Вы можете добавить, например,

expect -re "\n\[0-9]+"

в конец вашего скрипта.

0 голосов
/ 25 февраля 2012

Всегда хорошая идея попытаться сбежать с помощью ascii, попробуйте \ 0442 за \ $ 2 или попробуйте что-то вроде \\ $ 2 .Также вы можете отладить сценарий, чтобы выяснить, почему у вас нет вывода, если вы вставите 'exp_internal 1' без кавычек во второй строке.

...