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

Beh*_*ooz 6 linux http wget

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

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

Nav*_*ern 7

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

\n\n
wget --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\n
Run 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\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
NAME\n logger \xe2\x80\x94 a shell command interface to the syslog(3) system log module\n
Run Code Online (Sandbox Code Playgroud)\n