Eu usaria um script Bash que invoque netcat
uma vez para cada tipo de resposta, com entrada apropriada para gerar cada tipo diferente de código de resposta. Eu iria canalizar isso embora grep
para verificar a resposta correta e ecoar uma mensagem em STDERR
se não estiver correto.
Isso deve ser relativamente fácil para os intervalos 2xx, 3xx e 4xx, supondo que existam URLs no seu servidor que realmente gerem cada código de resposta diferente. Os intervalos 5xx referem-se a erros do lado do servidor, portanto, para invocá-los deliberadamente, você precisará configurar URLs específicas em seu servidor que causam cada erro. O intervalo 1xx provavelmente é melhor testado usando um cliente HTTP mais completo, como curl
ou wget
.
Existe mais do que uma maneira de resolver este problema.
Existe um erro desagradável em alguma versão do netcat , o que significa que sai assim que terminar de ler a partir de STDIN. Além disso, as páginas man fornecidas com esta versão com bugs incluem um exemplo que não funciona. A solução alternativa é a opção -q <number>
, que especifica um número de segundos para aguardar uma resposta antes de sair.
echo -ne "GET / HTTP/1.1\nHost: example.com\n\n" | nc -q 1 example.com 80 | grep -q "HTTP/1.1 301" || echo "HTTP 302 test failed!" >&2