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

(0)

相关推荐

  • Linux中执行shell脚本的4种方法总结

    主要介绍了Linux中执行shell脚本的4种方法总结,即在Linux中运行shell脚本的4种方法,需要的朋友可以参考下 操作方法 01 方法一:切换到shell脚本所在的目录(此时,称为工作目录) ...

  • linux中利用UnixBench进行性能测试

    UnixBench是一款开源的测试 unix 系统基本性能的工具,是比较通用的测试VPS性能的工具. UnixBench会执行一系列的测试,包括2D和3D图形系统的性能衡量,测试的结果不仅仅只是CPU ...

  • 在Linux的系统Shell脚本中使用if语句的方法

    Bourne Shell 的 if 语句和大部分编程语言一样 - 检测条件是否真实,如果条件为真,shell 会执行这个 if 语句指定的代码块,如果条件为假,shell 就会跳过 if 代码块,继续 ...

  • linux系统安全shell脚本第二版

    使用方法将其复制,保存为一个shell文件,比如security.sh.将其上传到linux服务器上,执行sh security.sh,就可以使用该脚本了! 复制代码 代码如下: #!/bin/sh ...

  • Linux Shell脚本系列教程(六):数组和关联数组

    这篇文章主要介绍了Linux Shell脚本系列教程(六):数组和关联数组,本文讲解了什么是数组和关联数组、定义打印普通数组、定义打印关联数组等内容,需要的朋友可以参考下 一、数组和关联数组 数组是S ...

  • Linux通过shell脚本创建SVN版本库简化创建过程

    Linux每次建立SVN版本库的过程都非常麻烦,如果将这些通过shell脚本来实现的话会简单很多,那么这个shell脚本要如何编译呢?下面小编就给大家介绍下Linux利用shell脚本创建SVN版本库 ...

  • WPS中如何利用自定义样式自动生成目录?

    详细讲WPS中利用自定义样式自动生成目录的步骤. 操作方法 01 全选之后,点击"清除格式"按钮. 02 得到没有格式的文档. 03 点击图中"新样式"右下角的 ...

  • Linux中svn提交文件后自动同步更新到网站目录

    下面来为各位介绍Linux中svn提交文件后自动同步更新到网站目录希望文章对各位有帮助. 有时,对于多文件需要上传到服务器的时候将会很麻烦,但是如果使用svn的钩子脚本就容易实现本地提交svn后,自动 ...

  • Linux shell脚本中连接字符串的方法

    这篇文章主要介绍了Linux shell脚本中连接字符串的方法,大家参考使用吧 如果想要在变量后面添加一个字符,可以用一下方法: 代码如下: $value1=home $value2=${value1 ...