无法在Perl中获得扩展SNMP输出

时间:2010-12-18 21:26:45

标签: perl snmp net-snmp

我编写了一个Perl脚本来放回一些SNMP值,这样可以正常工作。我现在在远程服务器上编写了一个脚本,并使用SNMP中的extend函数将脚本中的值放入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";

但没有任何回复,我不知道为什么......没有错误或任何东西,我错过了一些愚蠢的东西吗?

希望有人可以提供帮助,因为这让我感到疯狂:)

1 个答案:

答案 0 :(得分:2)

我假设您使用了netsnmp snmpget。好吧,它隐藏了太多细节,因为它在后台加载MIB​​文档,并很好地将OID和SNMP值转换为各种用户友好格式。

所以接下来要注意它所执行的装饰,并在你自己的代码中模拟它以达到相同的效果。