Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取unix';顶部';expect脚本的命令输出_Unix_Expect - Fatal编程技术网

获取unix';顶部';expect脚本的命令输出

获取unix';顶部';expect脚本的命令输出,unix,expect,Unix,Expect,全部, 我想在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

全部,
我想在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"   

当我执行这个时,我没有得到任何输出。执行unix语句的正确语法是什么?我如何让它工作,以便得到正确的rsize值作为输出

尝试使用ascii转义总是一个好主意,尝试\0442获取\$2或尝试\$2之类的内容 。此外,如果在第二行插入不带引号的“exp_internal 1”,您还可以调试脚本以查找没有输出的原因

是否可以在不添加“interact”语句的情况下获得输出

是的。等待输出的其他语句也会这样做;你可以加上e。g

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

到脚本末尾。

Unix的哪个版本?登录并键入“mantop”,然后查看命令。另外,在serverfault.com上试试这个,那么您的top命令就可以了(至少在我的OS X上)-尝试删除$2上的\如果我删除了\我得到一个错误:无法读取“2”:在执行“set Mycmd”top-l 1-stats pid,rsize,command | grep Process | u Name | awk{print$2}时没有这样的变量“”仅供参考:top命令在我的Mac OSX上运行良好。我在执行expect脚本时没有得到输出,否则会得到什么输出?@Ed:我现在得到输出了。我修改了expect脚本,并在脚本末尾添加了“interact”。执行unix语句,我得到一个输出(顺便说一句,rsize是进程的驻留内存大小,输出类似于70M+,70M,70M-)。是否可以在不添加“interact”语句的情况下获得输出