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

时间:2012-02-24 21:30:52

标签: unix expect

全部,
我想在expect脚本中执行一个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 :(得分:0)

尝试使用ascii进行转义总是一个好主意,尝试使用\ 0442作为\ $ 2或尝试类似\\ $ 2的内容 。如果你在第二行插入'exp_internal 1'而没有引号,你也可以调试脚本找到你没有输出的原因。

答案 1 :(得分:0)

  

是否可以获得输出而无需添加"互动"声明

是的,确实如此。等待输出的其他语句也会这样做;你可以添加e。克。

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

到你脚本的末尾。