我有一个脚本,每隔几分钟检查一次我的公共 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