免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2654 | 回复: 10
打印 上一主题 下一主题

日志统计IP数,卡住了,请各位不吝赐教。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-15 15:46 |只看该作者 |倒序浏览
本帖最后由 下后下前拳 于 2010-11-15 16:02 编辑

日志的格式如下:
58.20.46.212 - - [15/Nov/2010:15:24:11] "GET /announce?info_hash=5%de0%23d%d3%24%04%83%c0q%fe%5dj%eb%beK%3f%7b%0d&peer_id=-QD1900JAjDdcr527bDL&port=80&uploaded=22620764&downloaded=1184644876&left=6872891392&key=b285cead&compact=1&numwant=200&no_peer_id=1 HTTP/1.0" 200 46 "-" "qqdownload/1.9.273.0"

代码如下:
#!/usr/bin/perl
use warnings;
use strict;

my $day=`date -d 'yesterday' +%d/%b`;
print $day;
my $file="/var/log/bt.log";
my $i=0;
my @line;
my %ip;

open(BT,$file);
my @array=<BT>;
close(BT);

foreach(@array){
        @line=split(' ',$_);
                if ($line[3]=~/^\[$day/ && $line[7]==200){
                $ip{$line[0]}=1;
                }
        }

foreach (keys %ip){
$i++;
}

print $i."\n";

总是报错。。Use of uninitialized value in pattern match (m//) at ./bt_calculate.pl line 18.
弄了半天都是这个问题。。疯了

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
2 [报告]
发表于 2010-11-15 15:55 |只看该作者
本帖最后由 zhlong8 于 2010-11-15 15:56 编辑

@line 没那么长,下标3没数据看来。查检下 split 分割的数据对不对,log 有没空行

论坛徽章:
0
3 [报告]
发表于 2010-11-15 16:00 |只看该作者
$line[5]之间没空格,因为版面问题看起来有点怪,
这个$line[3]和$line[7]都能正确打印出来,就是做正则时出现问题。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
4 [报告]
发表于 2010-11-15 16:03 |只看该作者
看报错就是 $line[3]的问题,还是上面那句,看你 LOG 的格式是不是有空行,或者 split 后还不够4项的

还有这个是警告,程序还是会继续执行的,难道一个正确的都没有?

论坛徽章:
0
5 [报告]
发表于 2010-11-15 16:06 |只看该作者
哎哟。。一个正确的都没有。。刚试了下
我再好好看看LOG,找找落下了什么。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
6 [报告]
发表于 2010-11-15 16:08 |只看该作者
那个200应该是在第6列吧?不对,是7

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
7 [报告]
发表于 2010-11-15 16:11 |只看该作者
你的程序,我用你上面那条数据,是正确的……

论坛徽章:
0
8 [报告]
发表于 2010-11-15 16:12 |只看该作者
呃啊

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
9 [报告]
发表于 2010-11-15 16:15 |只看该作者
所以说,还是一是 $day 这个我改成15了,windows 没办法。再就你LOG格式了

论坛徽章:
0
10 [报告]
发表于 2010-11-15 16:22 |只看该作者
兄弟,谢谢你,我找到问题了,我应该 chomp($day)一下。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP