2017-08-20 8 views
0

Je suis en train de capturer une sortie de courbure après le frai vers une machine distante. La fonction attente ne cesse de s'éteindre, j'ai essayé différents modèles toujours pas de chance. La demande boucle est de la forme,python pexpect échoue pour la sortie curl

hdl2.sendline("curl -v http://{0}/index.html -o /dev/null".format(host1)) 

La sortie reçu est

" > 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 
[email protected]:~$ " 

Ceci est la sortie de fin, j'ai donné qu'ils attendent,

hdl2.expect("\$ ") 

Mais chaque fois que je pexpect temps libre. Toutes les suggestions sont appréciées.

Répondre

1

Cela peut se produire en raison de la mise en mémoire tampon de ligne: [email protected]:~$ n'est pas terminée avec \n, donc except peut ne pas prendre en compte cette ligne. Vous pouvez essayer ceci:

hdl2.sendline("curl -v http://{0}/index.html -o /dev/null; echo DONE".format(host1)) 
hdl2.expect("DONE") 

(Utilisez une chaîne qui sera unique pour vos données au lieu de DONE.)

1

délai par défaut de pexpect est de 30 secondes. Si votre commande curl a besoin de plus de temps, vous devez augmenter la valeur du délai. Par exemple:

hdl2.expect("\$ ", timeout=600)