web-dev-qa-db-ja.com

wget-戻りコードが200の場合のみ保存、それ以外の場合は削除

数分ごとにパブリックIPアドレスをチェックするスクリプトがあります。
問題は、ISPがキャッシュされたページを時々提供することです(私はwgetで関連するすべての引数を使用しました。ispは、明らかに独自のスーパーを作成した無能なso-sosの束によって形成されます効率的なキャッシュサーバー)または自分のルーターで作成されたエラーページ。
その結果、wgetは私のIPアドレスを保存する必要があるときにエラーページを保存します。

編集:
IPアドレスの変更を検出するために使用しているもの
http://paste.debian.net/292602/

3
Behrooz

このコードスニペットは、正しい方向を指し示す必要があります。

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

ただし、pythonまたはPerlを使用します。これは簡単です。

スクリプトでどのように見えるか:

#!/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

また、syslogに直接書き込むことも避けてください。ロガーを使用する方がはるかに優れています。

NAME
 logger — a Shell command interface to the syslog(3) system log module
3
Navern