linux中利用Shell指令碼自動認可網站404死鏈到搜尋引擎

來源:互聯網
上載者:User

   Shell指令碼

  說做就做,簡單的寫了個 Shell 指令碼就搞定了!

  指令碼名稱:網站死鏈產生指令碼

  指令碼功能:每天定時分析網站前一天的 nginx 日誌, 然後提取狀態代碼為404並且UA為百度蜘蛛的抓取路徑,並寫入到網站根目錄下的 death.txt 檔案,用於提交百度死鏈。

  指令碼代碼:

  #!/bin/bash

  #Desc: Death Chain File Script

  #Author: ZhangGe

  #Blog: http://你的網域名稱/5038.html

  #Date: 2015-05-03

  #初始設定變數

  #定義蜘蛛UA資訊(預設是百度蜘蛛)

  UA=+http://www.baidu.com/search/spider.html

  #前一天的日期(nginx日誌)

  DATE=`date +%Y-%m-%d -d "1 day ago"`

  #定義日誌路徑

  logfile=/home/wwwlogs/你的網域名稱_${DATE}.log

  #定義死鏈檔案存放路徑

  deathfile=/home/wwwroot/你的網域名稱/death.txt

  #定義網站訪問地址

  website=http://你的網域名稱

  #分析日誌並儲存死鏈資料

  for url in `cat ${logfile} | grep -i "${UA}" | awk '{print $7 " " $9}' | grep " 404" | awk '{print $1}'`

  do

  grep "$url" ${deathfile} >/dev/null || echo ${website}${url} >>${deathfile}

  done

  使用說明:

  ①、指令碼適用於每天都做了日誌切割的Nginx

  ②、將代碼儲存為 shell 指令碼,比如 deathlink.sh,然後如下建立任務計劃:

  #執行如下命令編輯任務計劃

  [root@Mars_Server ~]# crontab -e

  #每天淩晨1點執行此指令碼

  0 1 */1 * * /root/death.sh >/dev/null 2>&1

  #按下ESC,然後鍵入 :wq 儲存並退出

  ③、執行後,將在網站根目錄產生死鏈檔案:death.txt,可以瀏覽器訪問看看內容,比如:

  http://你的網域名稱/death.txt

  ④、前往立即前往提交這個死鏈檔案即可:

  這樣一來,系統會每天執行指令碼,將昨天的百度蜘蛛爬到的404路徑儲存到網站根目錄下的 death.txt,以備百度死鏈抓取工具前來抓取。

  值得說明的是,這些死鏈記錄是累加的,已儲存的死鏈資料,就算百度蜘蛛不爬了也會繼續儲存,需要人工清理,不過一般不清理也沒啥問題。

  注意事項:如果你的 nginx服務 並沒有配置相應的 access 日誌,請自行在 server 下添加所需網站的 access 日誌,否則指令碼無法使用。

  三、其他拓展

  ①、如果你之前沒有做過 Nginx 日誌切割,那麼可以直接用下面這個指令碼來一次性搞定:

  #!/bin/bash

  #Desc: Cut Nginx Log and Create Death Chain File

  #Author: ZhangGe

  #Blog: http://你的網域名稱/5038.html

  #Date: 2015-05-03

  #①、初始設定變數:

  #定義access日誌存放路徑

  LOGS_PATH=/home/wwwlogs

  #定義蜘蛛UA資訊(預設是百度蜘蛛)

  UA=+http://www.baidu.com/search/spider.html

  #定義網站網域名稱(需要先給相應的網站以網域名稱形式配置了nginx日誌,比如你的網域名稱.log)

  DOMAIN=你的網域名稱

  #定義前一天日期

  DATE=`date +%Y-%m-%d -d "1 day ago"`

  #定義日誌路徑

  logfile=/home/wwwlogs/你的網域名稱_${DATE}.log

  #定義死鏈檔案存放路徑

  deathfile=/home/wwwroot/你的網域名稱/death.txt

  #定義網站訪問地址

  website=http://你的網域名稱

  #②、Nginx日誌切割

  mv ${LOGS_PATH}/${DOMAIN}.log ${LOGS_PATH}/${DOMAIN}_${DATE}.log

  kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`

  #可選功能: 自動刪除30天之前的日誌,可自行修改儲存時間長度。

  cd ${LOGS_PATH}

  find . -mtime +30 -name "*20[1-9][3-9]*" | xargs rm -f

  #③、網站死鏈產生(百度專用)

  #分析日誌並儲存死鏈資料

  for url in `cat ${logfile} | grep -i "${UA}" | awk '{print $7 " " $9}' | grep " 404" | awk '{print $1}'`

  do

  grep "$url" ${deathfile} >/dev/null || echo ${website}${url} >>${deathfile}

  done

  ②、其他WEB伺服器,比如 Apache 或 IIS,只要參考指令碼思路,修改成實際的路徑或日誌欄位,同樣可以寫一個相同功能的 Shell 或 Batch 指令碼,有需求的朋友自己去研究折騰吧!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.