Como obter um código de erro correto quando a transferência foi encerrada antes de obter o arquivo inteiro

0

Eu tenho um script bash que chama curl usando um proxy. Hoje há um problema com o local de download.

A chamada de onda termina com:

curl: (18) transfer closed with 7512708716 bytes remaining to read

Embora esse erro ocorra, o código de retorno permanece 200, de modo que meu script "pensa" que estava tudo bem.

Como posso dizer enrolar para dar outro código de retorno que o http-200?

    
por schulle877 03.05.2016 / 12:37

2 respostas

0

O erro foi:

rc=$( curl ... )

Isso me deu o código http de volta porque eu preenchi $rc com o stdout de curl. Eu tenho que preencher rc com $? depois.

Depois de alterar meu código para:

httprc=$( curl ...)
rc=$?

Eu recebi os dois códigos de "retorno". Graças a meuh !

    
por 09.05.2016 / 08:35
0

curl --fail faz parte do que você deseja:

de man curl :

-f, --fail

(HTTP) Fail silently (no output at all) on server errors. This is mostly done to better enable scripts etc to better deal with failed attempts. In normal cases when an HTTP server fails to deliver a document, it returns an HTML document stating so (which often also describes why and more). This flag will prevent curl from outputting that and return error 22.

This method is not fail-safe and there are occasions where non-successful response codes will slip through, especially when authentication is involved (response codes 401 and 407).

Mas bloqueia a saída para a tela.

    
por 03.05.2016 / 12:49