萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> linux中利用Shell腳本自動提交網站404死鏈到搜索引擎

linux中利用Shell腳本自動提交網站404死鏈到搜索引擎

   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 腳本,有需求的朋友自己去研究折騰吧!

copyright © 萬盛學電腦網 all rights reserved