免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: spark_zhang
打印 上一主题 下一主题

求一个shell脚本 [复制链接]

求职 : 技术支持/维
论坛徽章:
0
11 [报告]
发表于 2010-06-30 07:54 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
12 [报告]
发表于 2010-06-30 10:47 |只看该作者

  1. #!/bin/awk -f

  2. BEGIN {
  3. while( ("date +%M" | getline now) > 0 )
  4.         time=now-5;
  5.         print "\n=============================================================="
  6.    printf("                   IP between %dmin ~ %dmin  \n", time, now );
  7.         print "==============================================================";
  8. }

  9. {
  10.         FS=":";
  11.         if( $3>=time && $3<=now )
  12.         {
  13.                 split( $0, myarray, " " );
  14.                 print myarray[1];
  15.         }
  16. }

  17. END {
  18.         printf( "========================end-of-report=========================\n\n" );
  19. }

复制代码
程序运行结果:
[mgqw@localhost test]$ ./5min.sh m.log

==============================================================
                   IP between 40min ~ 45min  
==============================================================
60.21.227.216
========================end-of-report=========================



m.log文件内容如下:
[mgqw@localhost test]$ cat m.log
192.168.61.173 [29/Jun/2010:17:21:52 "GET 9
192.168.10.29 [29/Jun/2010:17:22:52 "-" 9
60.21.227.216 [29/Jun/2010:17:23:52 "GET 9
59.59.187.34 [29/Jun/2010:17:24:52 "GET 9
59.59.187.34 [29/Jun/2010:17:25:52 "GET 9
60.21.227.216 [29/Jun/2010:17:44:52 "GET 9
59.59.187.34 [29/Jun/2010:17:27:52 "GET 9
113.92.78.222 [29/Jun/2010:17:28:52 "GET 9
192.168.61.172 [29/Jun/2010:17:29:52 "GET 9
192.168.63.192 [29/Jun/2010:17:30:52 "GET 9

论坛徽章:
0
13 [报告]
发表于 2010-06-30 11:23 |只看该作者
本帖最后由 zhujinzz 于 2010-06-30 13:21 编辑

当前时间10分钟前的数据
# date
Wed Jun 30 11:22:00 HKT 2010

# grep "`date -d '10 min ago' +%d/%b/%Y:%H:%M`" access_log
XXXXX  - - [30/Jun/2010:11:12:31 +0800] "GET /xxxxx/style/images_1/button/others_v.gif HTTP/1.1" 304 -
XXXXX - - [30/Jun/2010:11:12:32 +0800] "GET /xxxxx/style/images_1/button/others.gif HTTP/1.1" 304 -

xxx对应ip地址

可试用下面:
grep "`date -d '10 min ago' +%d/%b/%Y:%H:%M`" access_log | awk '{print $1}'

论坛徽章:
0
14 [报告]
发表于 2010-06-30 17:24 |只看该作者
回复 1# spark_zhang


    经过测试解决了跨小时问题:
  1. #!/bin/awk -f

  2. BEGIN {
  3. while( ("date +%H:%M" | getline now) > 0 )
  4.         {
  5.                 split( now, nowarray, ":" );
  6.         }
  7.         #nowarray[1]和[2]为当前时间小时和分钟      
  8.         #测试跨小时,设置当前分钟为3
  9. #        nowarray[2]=3;
  10.        
  11.         start[1]=nowarray[1];
  12.         start[2]=nowarray[2]-5;
  13.         if( start[2]<0 )
  14.         {
  15.                 start[1] = start[1]-1;
  16.                 start[2] = start[2]+60;
  17.         }
  18.         print "\n=============================================================="
  19.    printf("                   IP between %02d:%02d~ %02d:%02d\n",start[1], start[2], nowarray[1], nowarray[2] );
  20.         print "==============================================================";
  21.         #设置分割符
  22.         FS=":";
  23. }

  24. {
  25.         #$2为小时 $3为分钟
  26. #        print $2":"$3;
  27.         if( (start[1]==nowarray[1] && $3>=start[2] && $3<=nowarray[2]) || (start[1]+1==nowarray[1] && ($3>=start[2]||($2==nowarray[1]&&$3<=nowarray[2]))) )
  28.         {
  29.                 split( $0, myarray, " " );
  30.                 print myarray[1], myarray[2];
  31. #                print myarray[1];
  32.         }
  33. }

  34. END {
  35.         printf( "========================end-of-report=========================\n\n" );
  36. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP