我在生成远程机器后捕获卷曲输出。期望功能不断超时,我尝试了不同的模式仍然没有运气。卷曲请求的格式为
hdl2.sendline("curl -v http://{0}/index.html -o /dev/null".format(host1))
收到的输出是
" > GET /index.html HTTP/1.1
> User-Agent: curl/7.35.0
> Host: 13.126.208.1
> Accept: */*
< HTTP/1.1 200 OK
< Date: Sun, 20 Aug 2017 12:32:54 GMT
* Server Apache/2.4.7 (Ubuntu) is not blacklisted
< Server: Apache/2.4.7 (Ubuntu)
< Last-Modified: Sun, 20 Aug 2017 09:56:44 GMT
< ETag: "2cf6-5572c61363668"
< Accept-Ranges: bytes
< Content-Length: 11510
< Vary: Accept-Encoding
< Content-Type: text/html
<
{ [data not shown]
100 11510 100 11510 0 0 3055k 0 --:--:-- --:--:-- --:--:-- 3746k
* Connection #0 to host 13.126.208.1 left intact
ubuntu@ip-172-31-28-48:~$ "
这是结束输出,我已经将期望视为
hdl2.expect("\$ ")
但每次我得到pexpect超时。任何建议都表示赞赏。
答案 0 :(得分:1)
由于线路缓冲可能会发生这种情况:ubuntu@ip-172-31-28-48:~$
未以\n
终止,因此except
可能不会考虑此行。你可以试试这个:
hdl2.sendline("curl -v http://{0}/index.html -o /dev/null; echo DONE".format(host1))
hdl2.expect("DONE")
(使用对您的数据而不是DONE
唯一的字符串。)
答案 1 :(得分:1)
Pexpect的默认超时为30秒。如果curl命令需要更多时间,则需要增加超时值。例如:
hdl2.expect("\$ ", timeout=600)