1
我已经编写了一个Perl脚本来放回一些SNMP值,这很好。我现在已经在远程服务器上编写了一个脚本,并使用SNMP中的扩展功能将脚本中的值放入SNMP中。无法在Perl中获得扩展SNMP输出
如果我运行:
snmpget -v2c -c public 10.0.0.10 'NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cc_power"'
我得到的结果是:
NET-SNMP-EXTEND-MIB::nsExtendOutput1Line."cc_power" = STRING: 544
但是,当我尝试使用我的脚本来获取信息反馈不明白这一点。下面是该脚本:
#!/usr/bin/perl
use strict;
use SNMP;
use RRDs;
my $rrd_db = "/storage/db/rrd/cc_power.rrd";
my $sess;
my $val;
my $error;
$sess = new SNMP::Session(DestHost => "10.0.0.10", Community => "public", Version => 2);
my $power = $sess->get('NET-SNMP-EXTEND-MIB::nsExtendOutput1Line.\"cc_power\"');
$error=RRDs::error;
die "ERROR while updating RRD: $error\n" if $error;
my $date=time;
print "Data Script has been run - Output: ${date}:${power}\n";
而是返回什么,我不知道为什么......没有任何错误或任何东西,我错过了一些愚蠢的事?
希望有人能帮助,因为这是我发疯:)
使用wireshark检查SNMP get是否从您的脚本正确发送。检查回复,并将其与net-snmp get成功使用时捕获的数据包进行比较。 您还应该启用SNMP调试以查看是否存在某些问题。 $ SNMP :: verbose = 1; $ SNMP :: debugging = 1; – 2010-12-18 23:29:39
嗨,感谢您的想法,但在我发布后,我认为也许我应该尝试OID,它的工作,所以有一些不能很好地翻译... – ard 2010-12-19 00:07:59