shell分析日志教程1:快速批量提取404错误页面URL

shell学习笔记 SEO教程4,9352字数 1568阅读5分13秒阅读模式

2014年6月21日补充

刚在文章留言里看到有朋友指出,下面提到的这些,只能在windows系统实现,用linux系统的朋友可能没这么复杂了,因为linux直接内置这些命令的,根本不需要这个cygwin软件。我把读者默认地当成是用过cygwin的人了。在此我声明一下,如果需要进行下面所有的操作,你首先得了解什么是cygwin,以及能搞定cygwin在windows系统下的安装。

cygwin的下载及安装请看这篇百度经验文章:http://jingyan.baidu.com/article/200957619b0c30cb0621b478.html,回头我再写一个侧重于SEO工具方面的详细安装教程。

第一步:合并最近一个月的日志文件

转到日志文件存放的目录,最简单的办法是输入cd命令后,把文件夹拖进shell窗口中来

cd /cygdrive/c/Users/fang/Desktop/wwwlog

合并最近一个月的日志文件,并输出结果到all.txt文件中:

cat *.log >all.txt

 第一步:合并最近一个月的日志文件

第二步:拆分出百度蜘蛛的日志

合并完日志文件,拆出百度蜘蛛日志太简单了,一条grep命令就行:

grep "Baiduspider" all.txt >bd.txt

第二步:拆分出百度蜘蛛的日志

第三步:批量提取404错误页面。

且仅提取百度蜘蛛遇到的404错误页面,其中的$17是我当前日志文件404状态码所在的分段,去重并仅保留html/php/asp三种格式的网页。

很多朋友问我这个$17值怎么来的,我贴出一段示例日志用来说明一下,每一项都是以空格隔开的,大家数一下自己的404状态码在第几段就行了,图太小看不清的话,右键在新窗口打开即可看原图:

示例日志

cat bd.txt|awk '{if($17~"404")print "http://www.yaranpeixun.com"$7}'|sort|uniq|egrep "html|php|asp" >404.txt

第三步:批量提取404错误页面

最终效果如下:熟练的话,不到分钟就可以把最近一个月的404错误页面URL给提取到了:

最近一个月的404错误页面URL给提取到了

上传这个404错误页面列表到你网站根目录下,然后我们就可以到百度站长平台去提交这些404错误页面了:

到百度站长平台去提交这些404错误页面

其实上面的所有代码,都可以写到一块儿去,我们可以通过管道命令“|”来实现:

cat *.log|grep "Baiduspider"|awk '{if($17~"404")print "http://www.yaranpeixun.com"$7}'|sort|uniq|egrep "html|php|asp" >404.txt

其实上面的所有代码,都可以写到一块儿去


上面所用到的所有命令,都可以在这篇文章中得到详细的使用方法介绍:Shell分析日志常命令快速入门,请自行补脑一下。在下一篇文章当中,我将为你继续分享我在学习shell和利用shell分析日志过程中一些心得。

如果你觉得这篇文章对你有帮助,可以在下面给我留言告诉我,谢谢!:)


2014年6月27日补充

如果想再严谨一点话,可以把上面得到的404错误URL再拿来跑一遍,防止某些情况下蜘蛛在爬到这个URL时,该URL只是临时打不开的,当我们在分析的时候它已经可以打开了。下面是批量跑404URL的shell代码,点击下载源代码

跑完1744条URL用时7分多钟。

跑完1744条URL用时7分多钟

while read line
do
curl -w "$line "%{http_code}"\n" -s -o /dev/null -I "$line" >>404url.txt
done <404.txt

跑完以后会自动生成404url.txt,结果如下所示:

检查一批URL的HTTP状态:cat url.txt|while read line; do curl -I $line -m 5 --connect-timeout 5 -o /dev/null -s -w "$line "%{http_code}"\n"; done>ok.txt

 最后更新:2015-3-17
  • 本文由 asdfasd 发表于 2014-06-2019:23:14
  • 转载请务必保留本文链接:http://wp.fangfa.me/shell/shell-extract-404-pages.html
评论  5  访客  5