2012-02-24 59 views
0

全部,
我想在expect腳本中執行unix語句。unix語句輸出進程的rsize值。我以前沒有編程過。 這是我的代碼:從預期腳本獲取unix'top'命令輸出

#!/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值作爲輸出結果?

+0

什麼版本的Unix?登錄並鍵入'man top'並查看命令。另外,在serverfault.com上試試這個 – EdH 2012-02-24 21:34:44

+0

我在Mac OSX上(10.7.3) – smokinguns 2012-02-24 21:35:49

+0

然後你的最高命令是好的(至少在我的OS X上) - 嘗試刪除$ 2上的\ – EdH 2012-02-24 21:44:55

回答

0

總是一個好主意,試圖與ASCII逃脫,嘗試\ 0442爲\ $ 2或嘗試像\\ $ 2 。也可以調試腳本找到你爲什麼沒有輸出,如果你插入「exp_internal 1」在第二行沒有引號。

0

Is it possible to get the output without having to add the "interact" statement

是的,它是。等待輸出的其他語句也會執行;你可以添加e。 G。

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

到您的腳本的末尾。