最新 RSS

IT系社員のだめだめログ

2011/10/27

[snmp] MIBファイル解析してみたり

トラップ定義とか抜き出してみるテスト。

#!/usr/bin/perl

use strict;
use warnings;

my @buf = ();

while ( my $line = <> ) {
	$line =~ s/[\r\n]*$//;
	$line =~ s/^\s*//;
	$line =~ s/--.*$//;
	if ( $line =~ /^\s*$/ ) {
		next;
	}
	push @buf, $line;
}

my $buf = join " ", @buf;

my @list = ();
$buf =~ s/([a-zA-Z0-9]+)\s+(?:TRAP|NOTIFICATION)-TYPE\s+(.*?)::=/push @list, "$1::=$2"/eg;

foreach my $item ( @list ) {
	my ( $name, $value ) = split /::=/, $item;

	print "$name";

	if ( $value =~ /(?:OBJECTS?|VARIABLES?)\s*{(.*?)}/ ) {
		my $objects = $1;
		$objects =~ s/\s//g;
		print ",$objects";
	}

	print "\n";
}