Eu preciso testar minhas respostas do servidor HTTP em vários casos, mesmo em caso de falha na autenticação. Em caso de falha na autenticação, meu servidor retorna 401 Unauthorized e também um corpo de resposta que simples contém Unauthorized (ou talvez alguma outra mensagem detalhada).
Usando, por exemplo, curl ou httpie , eu obtive esse corpo de resposta no caso de 401 de resposta.
$ curl http://10.5.1.1/bla
Unauthorized
$ curl http://10.5.1.1/bla --digest --user joe:wrong
Unauthorized
$ http http://10.5.1.1/bla -b
Unauthorized
$ http http://10.5.1.1/bla -b --auth-type digest --auth joe:wrong
Unauthorized
Mas ao tentar isso usando o wget, não tenho saída:
$ wget http://10.5.1.1/bla -q -O /dev/stdout
$ wget http://10.5.1.1/bla -q -O /dev/stdout --user joe --password wrong
wget retorna com exitcode 6 neste caso, mas eu preciso verificar a mensagem de resposta.
Aqui está um dump do tráfego completo, capturado usando httpie:
$ http http://10.5.1.1/bla --print hbHB
GET /bla HTTP/1.1
Accept: */*
Accept-Encoding: gzip, deflate
Connection: keep-alive
Host: 10.5.1.1
User-Agent: HTTPie/0.9.2
HTTP/1.1 401 Unauthorized
Connection: keep-alive
Content-Length: 13
Content-Type: text/plain
Date: 2017-08-27 23:01:07
Server: Vistra-I St10 SW218 HW010
WWW-Authenticate: Digest realm="Vistra-I", qop="auth", nonce="a0c5d461f2b74b2b797b62f54200d125", opaque="0123456789abcdef0123456789abcdef"
Unauthorized
(Observe que a mensagem Unauthorized no corpo da resposta termina com um novo caractere de linha, por isso o comprimento do conteúdo: 13)
A mesma coisa, se o servidor responder com 403 ou 404 et cetera.
Alguma idéia de como obter o corpo da resposta usando wget neste caso?
Editar 2017-09-22
Encontrada a opção --content-on-error no meu wget 1.17.1 (veja também manual do wget ).
Isso funciona no caso de, e. código de resposta 404 , mas não para 401 nor 5xx codes.
Para 401 , consulte este bug .