请教个perl SNMP的列子

请教个perl SNMP的列子

使用CPAN上的代码如下:

#!/usr/bin/perl
use SNMP;
$sess = new SNMP::Session(DestHost => localhost, Community => public);
printf("sess=$sess\n");

($a,$b,$c)=$sess->trap(enterprise=>'1.3.6.1.4.1.2011.2.15.1.7.1.1.0', # or 'ucdavis' [default]
                agent => '127.0.0.1', # or 'localhost',[dflt 1st intf on host]
                generic => specific,  # can be omitted if 'specific' supplied
                specific => 5,        # can be omitted if 'generic' supplied
                uptime => 1234,       # dflt to localhost uptime (0 on win32)
                [[ifIndex, 1, 1],[sysLocation, 0, "here"]]); # optional vars
printf("a,b,c=$a,$b,$c\n");                                     # always last


运行后如下显示:
sess=SNMP::Session=HASH(0x9f95d40)
a,b,c=,,

直接用命令行方式:
snmpwalk -v 1 localhost -c public 1.3.6.1.4.1.2011.2.15.1.7.1.1.0            
SNMPv2-SMI::enterprises.2011.2.15.1.7.1.1.0.1.1.1 = INTEGER: 1
SNMPv2-SMI::enterprises.2011.2.15.1.7.1.1.0.1.2.1 = STRING: "01"
SNMPv2-SMI::enterprises.2011.2.15.1.7.1.1.0.1.3.1 = STRING: "/bin/sh /etc/snmp/01.sh"
SNMPv2-SMI::enterprises.2011.2.15.1.7.1.1.0.1.100.1 = INTEGER: 0
SNMPv2-SMI::enterprises.2011.2.15.1.7.1.1.0.1.101.1 = STRING: "N2000_ZD"
SNMPv2-SMI::enterprises.2011.2.15.1.7.1.1.0.1.102.1 = INTEGER: 0
SNMPv2-SMI::enterprises.2011.2.15.1.7.1.1.0.1.103.1 = ""


可以说SNMP的设置的正常的

那么为什么这个代码不能取到SNMP的信息?

那位高人可以指点下?
把($a,$b,$c)修改为@a也不行,有高手指点下么?
没人指点下啊。。。5555
snmpwalk 对应的命令不是 trap,
而是 get_request。

看看 perldoc Net::SNMP,
里面例子 N 多。
要获取数据用get_request或者get_bulk_request,都可以的......还要考略用不用non-blocking和blocking.......兄弟,如果感兴趣,可以一起学习,我也才学......
我的MSN:hahazhu0634@live.cn
我已经抓狂了

#!/usr/bin/perl
use strict;

   use NET::SNMP;

   my ($session, $error) = Net::SNMP->session(
      -hostname     => '192.168.96.3',
      -version      => 'snmpv3',
      -username     => 'myv3Username',
      -authkey      => '0x05c7fbde31916f64da4d5b77156bdfa7',
      -authprotocol => 'md5',
      -privkey      => '0x93725fd3a02a48ce02df4e065a1c1746'
   );

   if (!defined($session)) {
      printf("ERROR: %s.\n", $error);
      exit 1;
   }

   my $sysContact = '1.3.6.1.2.1.1.4.0';

   my $result = $session->set_request( -varbindlist => $sysContact);#[$sysContact, OCTET_STRING, 'Help Desk x911'] );

   if (!defined($result)) {
      printf("ERROR: %s.\n", $session->error);
      $session->close;
      exit 1;
   }

   printf("sysContact for host '%s' set to '%s'\n",
      $session->hostname, $result->{$sysContact}
   );

   $session->close;

   exit 0;


Can't locate object method "session" via package "Net::SNMP" (perhaps you forgot to load "Net::SNMP"?) at ./test.pl line 6.

居然报告这个。。。。。。。。。。。


QUOTE:
原帖由 SAS 于 2008-8-20 16:47 发表
我已经抓狂了
use NET::SNMP;

Net::SNMP

应该区分大小写吧


QUOTE:
原帖由 Guptill 于 2008-8-31 17:08 发表


Net::SNMP

应该区分大小写吧

有些人就是这样,你告诉他 1,他能听成 2。
第三次见这句话,很容易伤到新人。赫赫