我有一个脚本每隔几分钟检查一次我的公共 IP 地址。
问题是ISP有时会给我缓存的页面(我知道,我已经使用了wget中的所有相关参数,ISP是由一群无能的某人组成的,他们显然制作了自己的超高效缓存服务器)或我自己的路由器制作的错误页面。
结果,当 wget 应该保存我的 IP 地址时,它却保存了错误页面。
编辑:
我用什么来检测IP地址的变化
http://paste.debian.net/292602/
此代码片段应该为您指明正确的方向:
\n\nwget --server-response 78.47.35.18/ip-raw.php -O ip-current 2>&1| grep -c \'HTTP/1.1 200 OK\'\n1\nis_200_ok=$(wget --server-response 78.47.35.18/ip-raw.php -O ip-current 2>&1| grep -c \'HTTP/1.1 200 OK\')\n\necho $is_200_ok \n1\nRun Code Online (Sandbox Code Playgroud)\n\n不过我会使用 python 或 perl 来实现这一点。这样会更容易。
\n\n它在您的脚本中的外观如下:
\n\n#!/bin/bash\n\nrm -f ip-current /tmp/ip-message-temp\ntouch ip-old\n\nis_200_ok=$(wget --server-response 78.47.35.18/ip-blabl.php -O ip-tmp 2>&1| grep -c \'HTTP/1.1 200 OK\')\n\nif [ $is_200_ok == 1 ]; then\n mv ip-tmp ip-current\n echo "YES"\nelse\n echo "Got error instead of IP address :("\n exit 1\nfi\nRun Code Online (Sandbox Code Playgroud)\n\n还要避免直接写入系统日志,最好使用记录器:
\n\nNAME\n logger \xe2\x80\x94 a shell command interface to the syslog(3) system log module\nRun Code Online (Sandbox Code Playgroud)\n