全部,
编辑
我想在 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一些很好的例子。