wget - 仅当返回代码为 200 时保存,否则删除

wget - 仅当返回代码为 200 时保存,否则删除

我有一个脚本,每隔几分钟检查一次我的公共 IP 地址。
问题是 ISP 有时会给我缓存页面(我知道,我在 wget 中使用了所有相关参数,ISP 是由一群无能的某某组成的,他们显然自己制作了超高效的缓存服务器)或我自己的路由器生成的错误页面。
结果 wget 保存了错误页面,而它应该保存我的 IP 地址。

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

答案1

此代码片段应该为您指明正确的方向:

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

另外避免直接写入系统日志,最好使用记录器:

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

相关内容