Net :: SNMPTrapdに含まれているサンプルスクリプトを使用しようとしていますが、Socketルーチンで失敗します。私のコード:
#!/usr/bin/perl
use Net::SNMPTrapd;
my $snmptrapd = Net::SNMPTrapd->new()
or die "Error creating SNMPTrapd listener: ", Net::SNMPTrapd->error;
while (1) {
my $trap = $snmptrapd->get_trap();
if ( !defined($trap) ) {
printf "$0: %s\n", Net::SNMPTrapd->error;
exit 1
} elsif ( $trap == 0 ) {
next
}
if ( !defined( $trap->process_trap() ) ) {
printf "$0: %s\n", Net::SNMPTrapd->error
} else {
printf "%s\t%i\t%i\t%s\n",
$trap->remoteaddr,
$trap->remoteport,
$trap->version,
$trap->community
}
}
これを実行してCiscoルーターからv2トラップを送信すると、次のようにダンプされます。
Undefined subroutine &Net::SNMPTrapd::pack_sockaddr_in called at /usr/local/share/perl/5.14.2/Net/SNMPTrapd.pm line 554.
誰かがこれを修正する方法を教えてもらえますか?