python pexpect无法进行卷曲输出

时间:2017-08-20 12:56:13

标签: python pexpect

我在生成远程机器后捕获卷曲输出。期望功能不断超时,我尝试了不同的模式仍然没有运气。卷曲请求的格式为

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超时。任何建议都表示赞赏。

2 个答案:

答案 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)