免费注册 查看新帖 |

Chinaunix

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

perl 程序请求帮忙! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-19 21:48 |只看该作者 |倒序浏览
本帖最后由 robinylp 于 2011-04-20 17:27 编辑

#!/usr/bin/perl -w

use strict;
use Data::Dumper;

my @alerts;

my %prtrlinkios = (     "match" => qr/UPDOWN.*Port-channel.*down/,
                        "hosts" => ".*",
                        lifetime => 600
);

push(@alerts, \%prtrlinkios);



my %known;

#print Dumper(@alerts);
while(<STDIN>)
{
        my $zahl == 0;
        my $msg = $_;
        /^[^ ]+ +[^ ]+ +[^ ]+ +([^ ]+).* %(.+)$/;
        my $host = $1 || "";
        my $logline = $2 || $msg;
        for(my $i=0; $i<=$#alerts; $i++) {
                my $match = $alerts[$i]{"match"};
               my $hosts = $alerts[$i]{"hosts"};
                if ($logline =~ /$match/ and $host =~ /$hosts/) {
                        print "Got match!\n";
                        $zahl++;
                        if ($known{"$host:$logline"}) {
                                if ((int $known{"$host:$logline"}) < time()) {
                                        delete($known{"$host:$logline"});
                                } else {
                                        next;
                                }
                        }
                        $known{"$host:$logline"} = time() + $alerts[$i]{"lifetime"};
              open (FD, ">test.txt");
                        print FD "Logged:\n";
                        print FD $msg;
                        print FD "\n".$zahl;
                        close FD;
        }
}
我想要抓取由server发给我的udp包,并且中间有 UPDOWN.*Port-channel.*down 字段的,并进行计数,然后每10分钟输入test.txt文件中。

高手帮忙啊!

在此先谢谢了!

论坛徽章:
0
2 [报告]
发表于 2011-04-19 22:54 |只看该作者
不顶就下去了啊!请高手出招啊!

论坛徽章:
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
3 [报告]
发表于 2011-04-19 23:15 |只看该作者
代码不全吧? %pwfailed 里面没有 'hosts' 项, %known 哪里来的,for 循环莫名其妙有不就一个元素

论坛徽章:
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 [报告]
发表于 2011-04-19 23:28 |只看该作者
open FH 和上面的 print 是怎么回事,这个 open 是什么意思啊

论坛徽章:
0
5 [报告]
发表于 2011-04-20 14:44 |只看该作者
代码不全吧? %pwfailed 里面没有 'hosts' 项, %known 哪里来的,for 循环莫名其妙有不就一个元素
zhlong8 发表于 2011-04-19 23:15



    代码基本上就这些了。我又修改过了,请帮忙看看.

论坛徽章:
0
6 [报告]
发表于 2011-04-20 14:46 |只看该作者
本帖最后由 robinylp 于 2011-04-20 15:31 编辑
open FH 和上面的 print 是怎么回事,这个 open 是什么意思啊
zhlong8 发表于 2011-04-19 23:28



    对不起多敲了,print没有的。

与FD有关的本来是这样的:

                        open (FD, "| mail -s '".$test[$i]{"subject"}."' ".$test[$i]{"addr"});
                        print FD "Logged:\n";
                        print FD $msg;
                        print FD "\n".$test[$i]{"body"} if (defined($test[$i]{"body"}));
                        close FD;


谢谢,请帮忙再看看。

论坛徽章:
0
7 [报告]
发表于 2011-04-20 16:26 |只看该作者
我又做过修改了,请帮忙看看。

论坛徽章:
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
8 [报告]
发表于 2011-04-20 18:48 |只看该作者
每10分钟输入test.txt文件中。

这个没实现,其实我一直不明白你是让看什么的

论坛徽章:
0
9 [报告]
发表于 2011-04-20 19:45 |只看该作者
本帖最后由 robinylp 于 2011-04-20 22:57 编辑
这个没实现,其实我一直不明白你是让看什么的
zhlong8 发表于 2011-04-20 18:48



    请问一下,这个每10分钟怎么实现(不是用这个lifetime=>600来实现的吗?)? 并且这个程序能不能抓到包。 并且这个计数($zahl)可以这样写吗?

先谢了!

论坛徽章:
0
10 [报告]
发表于 2011-04-20 20:05 |只看该作者
其实我在写一个系统消息过滤程序,并且进行统计。

程序实现:收集网络设备发过来的消息,进行分类(端口出错,IP 包被丢弃等),然后进行统计,如在10分钟内有多少条端口出错信息。。。

程序沿用前一个人做的网络信息通过email向admin发送消息这个程序。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP