Eu acho que curl faria o trabalho. Eu escrevi em um script:
#!/bin/sh
function test {
res=`curl -I $1 | grep HTTP/1.1 | awk {'print $2'}`
if [ $res -ne 200 ]
then
echo "Error $res on $1"
fi
}
test mysite.com
test google.com
O problema aqui não importa o que eu faça, não consigo parar de imprimir o abaixo para stdout:
% Total % Received % Xferd Average Speed Time Time Time Current
Eu quero que um cronjob execute esse script e, se ele escrever essa mensagem, toda vez que eu o executar, receberei um email porque algo foi impresso como stdout no cron, mesmo que o site esteja funcionando bem.
Como obtenho o código de status sem entrar no lixo eletrônico stdout? Este código funciona, exceto o bônus de lixo eletrônico para o stdout, impedindo-me de usá-lo.
você quer
Isso fornecerá o código HTTP_STATUS como a única saída.
fonte
Eu faria assim para garantir que eu seja redirecionado para o host final e receba a resposta dele:
fonte
Use isso como sua condição ...
fonte
conforme indicado acima, o curl pode fornecer nativamente a resposta http:
Exemplo 1:
-s
silenciamos o progresso e-o /dev/null
deixamos a resposta para o lixo, mas-w
é seu aliado aqui:Isso pode ser simplificado ainda mais nativamente em curl, solicitando o url_effective e redirect_url:
No exemplo 2, vemos nossa resposta http inicial, domínios solicitados originais e redirecionamos o servidor com:
No entanto, se você deseja estabelecer uma resposta 200 mesmo após um redirecionamento 301 ou 302: Em seguida, você pode soltar o 'redirect_url' acima mencionado
No exemplo 3, adicionamos
-L
quais instruções curl para perseguir os redirecionamentos:fonte
some_user
sendo um nome real) ou "Como outros apontaram"