我正在尝试使用 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.
谁能告诉我如何解决这个问题?