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.