wget - Salva apenas se o código de retorno for 200, excluir caso contrário

2

Eu tenho um script que verifica meu endereço IP público em intervalos de alguns minutos.
O problema é que o ISP às vezes me fornece páginas em cache (eu sei, eu usei todos os argumentos relacionados em wget, o isp é formado por um bando de incompetentes so-and-sos que aparentemente criaram seu próprio servidor de cache supereficiente) ou páginas de erro feitas pelo meu próprio roteador.
E como resultado, o wget salva a página de erro quando deve salvar meu endereço IP.

EDITAR:
o que estou usando para detectar alterações no endereço IP do link

    
por Behrooz 15.08.2015 / 22:13

1 resposta

2

Este snippet de código deve apontar sua direção correta:

wget --server-response 78.47.35.18/ip-raw.php -O ip-current 2>&1| grep -c 'HTTP/1.1 200 OK'
1
is_200_ok=$(wget --server-response 78.47.35.18/ip-raw.php -O ip-current 2>&1| grep -c 'HTTP/1.1 200 OK')

echo $is_200_ok 
1

No entanto, eu usaria python ou perl para isso. Seria mais fácil.

Como vai ficar no seu script:

#!/bin/bash

rm -f ip-current /tmp/ip-message-temp
touch ip-old

is_200_ok=$(wget --server-response 78.47.35.18/ip-blabl.php -O ip-tmp 2>&1| grep -c 'HTTP/1.1 200 OK')

if [ $is_200_ok == 1 ]; then
    mv ip-tmp ip-current
    echo "YES"
else
    echo "Got error instead of IP address :("
    exit 1
fi

Além disso, evite escrever dirrectly para o syslog, é muito melhor usar o logger:

NAME
 logger — a shell command interface to the syslog(3) system log module
    
por 15.08.2015 / 22:58

Tags