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

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

全部,
编辑
我想在 Expect 脚本中执行 unix 语句并获得输出,而无需包含 interact 语句。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

如果我不包含 interact 语句,则不会获得任何输出。如何让它工作以便获得正确的 rsize 值作为输出?

答案1

为什么不直接使用 的输出ps

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

远程,您可以通过 ssh 执行此操作:

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

答案2

您可以使用其中任何一种方法,每种方法的结果都略有不同。

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

match_max您还应该了解一下哪些控制匹配多少的含义。

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

puts "$expect_out(buffer)"

http://en.wikipedia.org/wiki/Expect一些很好的例子。

相关内容