前段时间有朋友问我一些问题,其中涉及到shell脚本的编写。用过,那么这个脚本怎么写呢?它的思想在哪里?把这个问题带到今天的文章中,仅供参考。如有不完善之处,还请多多指教。问题1:写一个脚本,自动统计访问网站失败的IP地址问题2:写一个脚本,自动统计访问网站的IP地址,十分钟之内是不是访问网站失败?众所周知,我们经常无法打开网站,如果访问失败,网站日志肯定会被记录下来。因此,可以通过查看日志中的状态码(如200、400、403)来判断用户的访问结果2)获取IP地址获取IP地址很简单,awk命令是一个不错的选择。第二题:1)说IP地址同第一题。方法很多,也很简单。2)如何获取115.59.74.25内的十分钟日志--[27/Feb/2017:22:54:43+0800]"GET/Home/SaveData/indexHTTP/1.0"4043537"-""-"115.59.74.25--[27/Feb/2017:22:54:44+0800]"GET/Home/SaveData/indexHTTP/1.0"4043537"-""-"通过上面的日志格式可以看出日志包含时间点信息3)解决时间点问题,可以使用awk命令获取一定时间段内的信息awk'$4>="[27/Feb/2017:22:54:43"&&$4<="[27/Feb/2017:22:54:53'27/Feb/2017:22:54:53"'/wwwlogs/access.log**115.59.74.25--[27/Feb/2017:22:54:43+0800]"GET/Home/SaveData/indexHTTP/1.0"4043537"-""-"115.59.74.25--[27/Feb/2017:22:54:44+0800]"GET/Home/SaveData/indexHTTP/1.0"4043537"-""-"115.59.74.25--[27/Feb/2017:22:54:45+0800]"GET/Home/SaveData/indexHTTP/1.0"4043537"-""-"115.59.74.25--[2017年2月27日:22:54:47+0800]"GET/Home/SaveData/indexHTTP/1.0"4043537"-""-"115.59.74.25--[27/Feb/2017:22:54:48+0800]"GET/Home/SaveData/indexHTTP/1.0"4043537"-""-"115.59.74.25--[27/Feb/2017:22:54:49+0800]"GET/Home/SaveData/indexHTTP/1.0"4043537“-”“-”115.59.74.25--[2017年2月27日:22:54:50+0800]“GET/Home/SaveData/indexHTTP/1.0”4043537“-”“-”115.59。74.25--[27/Feb/2017:22:54:52+0800]"GET/Home/SaveData/indexHTTP/1.0"4043537"-""-"115.59.74.25--[27/Feb/2017:22:54:53+0800]"GET/Home/SaveData/indexHTTP/1.0"4043537"-""-"这样可以取出一段时间的日志信息4)解决十-分钟问题,需要使用系统命令date[root@~]#date+%d/%b/%Y:%k:%M:%S01/Mar/2017:7:32:25#Current时间[root@nfs-1-1~]#date+%d/%b/%Y:%k:%M:%S-d'-10minutes'01/Mar/2017:7:22:25#十分钟前的时间是十分钟。问题将在几分钟内解决。总结:其实写的大体思路是这样的,拆分需求解决需求,最后用命令堆叠起来。出路由思路决定编写脚本自动统计访问网站失败的IP地址vifail_connect_ip.sh##############################################此脚本用于自动检查客户端连接到##webserver失败################################!/bin/shegerp"400|403|404|500"/wwwlogs/access.log|awk'{print$1}'|sort-nr|uniq-c最好把结果追加到a文件,然后查看文件,因为可能输出太多,看不到之前的统计结果。当然实际生产环境中访问失败的状态码不止一种这些最终执行结果如下[root@~]#shfail_connect_ip.sh129.20.20.312.11.22.181.1.1.1统计IP十分钟内访问的网站地址viclient_connect_ip.sh#############################################此脚本用于自动检查连接到web服务器客户端的ip#createbymingonggeat2017--0-01#############################################!/bin/shTIME=`date+%d/%b/%Y:%k:%M:%S`NTIME=`date+%d/%b/%Y:%k:%M:%S-d'-10分钟'`#定义时间变量awk'$4>="'\[$NTIME'"&&$4<="'\[$TIME'"'/wwwlogs/access.log>log.txt#获取awk内的时间段日志信息'{print$1}'log.txt|sort-nr|uniq#提取并排序IP地址。如果有什么错误或者其他问题,欢迎大家留言评论,如果有帮助的话。欢迎点赞+转发分享。欢迎大家关注米公公的公众号:米公公的技术之路
