Linux

wget - 僅在返回碼為 200 時保存,否則刪除

  • August 16, 2015

我有一個腳本每隔幾分鐘檢查一次我的公共 IP 地址。

問題是 ISP 有時會給我記憶體頁面(我知道,我在 wget 中使用了所有相關的 args,isp 是由一群不稱職的某某顯然製造了自己的超高效記憶體伺服器)或我自己的路由器製作的錯誤頁面。

結果,當 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

還要避免直接寫入系統日誌,最好使用記錄器:

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

引用自:https://serverfault.com/questions/714415