Unix

從 Expect 腳本獲取 unix ’top’ 命令輸出

  • February 25, 2012

全部,

編輯

我想在 Expect 腳本中執行一個 unix 語句並獲得輸出,而不必包含互動語句。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以獲得一些很好的範例。

引用自:https://serverfault.com/questions/363580