在Bash脚本中收集网页统计信息

我需要收集统计数据每隔几秒钟检索一次网页需要多长时间。

我可以做一个

time wget --spider http://www.google.com/index.html 

(蜘蛛不会下载页面,只是检查他们在那里)

使用这个命令,我可以看到运行命令和页面状态需要多长时间(200 OK,404 NOT FOUND等)

我遇到的问题是我需要跟踪统计数据。 所以,如果我每隔几秒钟打一个网页,每隔一段时间我就会得到一个404我需要查看这些统计信息。

你可以尝试这样的事情来让你走

 #!/bin/bash URL="http://serverfault.com/" Result=$((time wget --spider "$URL") 2>&1 | egrep 'real|response') NumFields=$(echo $Result | awk '{print NF}') #16 Fields if there was a 302 redirect and the result is in $13 #9 fields for 200,404 the result in in $6 if [ $NumFields -eq 16 ] then Stats=$(echo $Result | awk 'BEGIN {OFS=",";} {print $13,$NF}') else Stats=$(echo $Result | awk 'BEGIN {OFS=",";} {print $6,$NF}') fi # Outputs YYYYMMDDHHMMSS,URL,Response,Time Taken # 20110526180254,http://www.google.oom/,302,0m1.000s # 20110526180928,http://serverfault.com/,200,0m0.225s # 20110526181041,http://www.google.com/fred/,404,0m0.089 echo $(date +"%Y%m%d%H%M%S"),"$URL","$Stats" 

如果您使用>>将输出redirect到一个文件,然后可以将其拉到电子表格或使用grep等从其中拉取信息。

你怎么看待这件事?

 curl --write-out %{time_total} --head google.ca/ >> ~/stats.txt 

这会给你一个输出:

 HTTP/1.1 301 Moved Permanently Location: http://www.google.ca/ Content-Type: text/html; charset=UTF-8 Date: Wed, 25 May 2011 21:24:45 GMT Expires: Fri, 24 Jun 2011 21:24:45 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 218 X-XSS-Protection: 1; mode=block 0.076 

然后你可以parsing成一个电子表格。 诚然,这可能不是最优雅的解决scheme。 您可以使用grep链(如grep -v Location: | grep -v Content-Type: | grep -v Date等)或更优雅的东西清理它。 我很好奇,看看别人提出了什么!

检查出Nagios进行监控,或者即使你不想要一个完整的Nagios安装检查Nagios插件,check_http会给你性能统计以及一个简单的可parsing输出。 您可以使用shell脚本将其放入一个您可以稍后处理的文件中。