每天定时获取网站前一天的 nginx 日志, 提取状态码为 404 并且 UA 为百度蜘蛛的抓取路径,写入到网站根目录下的 deathurls.txt 文件,由百度自动获取死链。
#!/bin/bash #Des: 自动生成404死链并提交到百度死链路径(shell脚本) #初始化变量: #定义access日志存放路径 LOGS_PATH=/home/www.2kb.com/ #定义蜘蛛UA信息(默认是百度蜘蛛) UA='+http://www.baidu.com/search/spider.html' #定义网站域名(需要先给相应的网站以域名形式配置了nginx日志,比如zhangge.net.log) DOMAIN=2kb.com.access #定义前一天日期 DATE=`date +%Y-%m-%d -d "1 day ago"` logfile=/home/wwwlogs/mao.sh_${DATE}.log #定义死链文件存放路径 deathfile=/home/wwwroot/mao.sh/death.txt #定义网站访问地址 website=https://www.2kb.com #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
#任务计划
[root@2kb.com ~]# crontab -e
#每天凌晨1点执行此脚本
0 1 */1 * * /home/www.2kb.com/death.sh >/dev/null 2>&1
#nginx 的access 日志格式也可以考虑修改(可选):
log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';
脚本执行后,会在网站根目录生成死链文件:deathurls.txt,可以浏览器访问,比如:
http://www.2kb.com/deathurls.txt
这时去百度资源查看,可以检查死链状态(https://ziyuan.baidu.com/linksubmit/url)
2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务