Shell+Curl網站狀態檢查指令碼 抓出無法訪問的網站_linux shell

來源:互聯網
上載者:User

一開始搭建中國部落格聯盟,既有博友提醒我,做網址大全這類網站維護很麻煩,需要大量的精力去Debug一些已夭折的網站,更是拿松哥的部落格大全舉例。當然,我也是深以為然。前些時間,看到夢軒麗人的boke123網址大全的維護記錄,好像是純手工檢查,張戈實在是佩服的五體投地,太有毅力了。


現在部落格聯盟也收錄的部落格也已破200了,全部來自自主提交,不管你是草博還是名博,張戈不會強買強賣。由於大部分都是建站不過半年的新站,半路放棄、提前太監的部落格估計還是有的,於是我決定還是把網站維護這個工作做起來。


上午用PHP做了一個放到了京東雲試了下,發現檢測速度一般,要等上半天(我寫的php太蹩腳,就不獻醜了)。
隨後,我在VPS上寫了一個多線程的網站狀態檢測指令碼,直接從資料庫load網站地址,然後用curl去檢測返回碼,發現速度非常好,基本1分鐘內就能出結果


以下是指令碼代碼:

#!/bin/bash#Author:ZhangGe#Date:2014-08-21#Desc:Check the site of ZGboke Alliance.#取出網站資料data=`/usr/bin/mysql -uroot -p123456 -e "use zgboke;select web_url from dir_websites where web_status='3';" -N -B | awk '{print $1}'`if [ -z "$data" ];then    echo "Faild to connect database!"    exit 1fitest -f result.log && rm -f result.logfunction delay {    sleep 3}tmp_fifofile=/tmp/$$.fifomkfifo $tmp_fifofileexec 6<>$tmp_fifofilerm $tmp_fifofile#定義並發線程數,需根據vps配置進行調整。thread=100for ((i=0 ;i<$thread;i++ ))do    echodone>&6#開始多線程迴圈檢測for url in $datado    read -u6    {    #curl抓取網站http狀態代碼    code=`curl -o /dev/null --retry 3 --retry-max-time 8 -s -w %{http_code} $url`    echo "$code ---> $url">>result.log    #判斷子線程是否執行成功,並輸出結果    delay && {        echo "$code ---> $url"    } || {        echo "Check thread error!"    }    echo >& 6}&done#等待所有線程執行完畢waitexec 6>&-#找出非200返回碼的網站echo List of exception website:cat result.log | grep -v 200exit 0

Ps:關於shell多線程指令碼,後續文章會有一個詳細說明,本文篇幅有限,就不多說了。
以下是中國部落格聯盟第一次成員網站存活檢測的結果:
①、 非200返回碼的異常網站:

②、指令碼抓取的無法訪問網站:

人工訪問篩選結果:


wangyingxue.net(王英學部落格):無法訪問,經確認處於備案中 √
www.tao0102.com(長江部落格):可以訪問 √
blog.hack7d.com(Mcdull技術部落格):無法訪問 ×
www.1992621.com(教師日記):可以訪問 √
www.3miaotu.com(三秒兔):無法訪問 ×
xiaoxiaomayi.com(小小螞蟻部落格):可以訪問 √
www.awrui.com(李文棟部落格):可以訪問 √


Ps:指令碼檢測機製為:8s內未連通的判定為異常,並重試3次,最後輸出結果,若三次均異常則為000。從圖中和人工篩選可以看出,存在一些誤殺,這個和8s的設定有一定關係。可以考慮設定為更長時間,得到更準確的結果,當然最終還是要結合人工確認的,所以也沒多大關係。


後續,中國部落格聯盟會制訂一個檢查周期,最短每星期檢查一次,最長一個月檢查一次,爭取讓每個展示的網站都能正常訪問。當然,我也會將每次檢查的結果公布在中國部落格同盟站長資訊專欄,方便所有成員查看。
由於目前中國部落格聯盟部署在京東雲擎,無法遠程操控資料庫,所以只好暫時用半自動的模式。等以後有時間搬到了阿里雲等VPS上後,將會將指令碼改成全自動狀態,當有網站聯絡多次檢測為失聯狀態時,將會暫時將其設定為隱藏狀態。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.