Shell脚本自动提交网站404死链到搜索引擎
从 Nginx 日志分析并生成能提交到搜索引擎的死链文件的 Shell 脚本。
一、前因后果


二、Shell 脚本


最后更新于
从 Nginx 日志分析并生成能提交到搜索引擎的死链文件的 Shell 脚本。




最后更新于
#!/bin/bash
#Desc: Death Chain File Script
#Author: ZhangGe
#Blog: https://zhang.ge/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/zhang.ge_${DATE}.log
#定义死链文件存放路径
deathfile=/home/wwwroot/zhang.ge/death.txt
#定义网站访问地址
website=https://zhang.ge
#分析日志并保存死链数据
for url in `awk -v str="${UA}" '$9=="404" && $15~str {print $7}' ${logfile}`
do
grep -q "$url" ${deathfile} || echo ${website}${url} >>${deathfile}
done#执行如下命令编辑任务计划[root@Mars_Server ~]# crontab -e #每天凌晨 1 点执行此脚本(注意脚本的实际路径)0 1 */1 * * /root/death.sh >/dev/null 2>&1 #按下 ESC,然后键入 :wq 保存并退出log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';#!/bin/bash
#Desc: Cut Nginx Log and Create Death Chain File
#Author: ZhangGe
#Blog: https://zhang.ge/5038.html
#Date: 2015-05-03
#①、初始化变量:
#定义 access 日志存放路径
LOGS_PATH=/home/wwwlogs
#定义蜘蛛 UA 信息(默认是百度蜘蛛)
UA='+http://www.baidu.com/search/spider.html'
#定义网站域名(需要先给相应的网站以域名形式配置了 nginx 日志,比如 zhang.ge.log)
DOMAIN=zhang.ge
#定义前一天日期
DATE=`date +%Y-%m-%d -d "1 day ago"`
#定义日志路径
logfile=/home/wwwlogs/zhang.ge_${DATE}.log
#定义死链文件存放路径
deathfile=/home/wwwroot/zhang.ge/death.txt
#定义网站访问地址
website=https://zhang.ge
#②、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 `awk -v str="${UA}" '$9=="404" && $15~str {print $7}' ${logfile}`
do
grep -q "$url" ${deathfile} || echo ${website}${url} >>${deathfile}
done