从Expect脚本获取unix'top'命令输出

所有,
编辑
我想在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的含义,它控制着多less匹配。

结果被捕获后,您将需要查看结果

 puts "$expect_out(buffer)" 

http://en.wikipedia.org/wiki/Expect查看一些很好的例子&#x3002;