wget – 只有保存返回码是200,否则删除

我有一个脚本每隔几分钟检查我的公共IP地址。
问题是ISP有时会给我caching的页面(我知道,我已经使用了wget中的所有相关参数,isp是由一堆无能为力的so-and-sos形成的,这显然是他们自己的超高效caching服务器)或由我自己的路由器所做的错误页面。
结果wget保存错误页面,当它应该保存我的IP地址。

编辑:
我用什么来检测IP地址的变化
http://paste.debian.net/292602/

这段代码应该指出你的方向:

 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,使用logger会更好:

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