【问题标题】:Can't get Extended SNMP output in Perl在 Perl 中无法获得扩展的 SNMP 输出
【发布时间】:2010-12-18 21:26:45
【问题描述】:

我编写了一个 Perl 脚本来放回一些 SNMP 值,它工作正常。我现在已经在远程服务器上编写了一个脚本,并使用SNMP 中的扩展函数将脚本中的值放入 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;
  • 嗨,谢谢你的想法,但在我发布之后,我想也许我应该尝试使用 OID,它确实有效,所以有些东西翻译得不好......

标签: perl snmp net-snmp


【解决方案1】:

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

所以下次注意它执行了什么装饰,并在你自己的代码中进行模拟以达到相同的效果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 2011-05-19
    • 2020-04-09
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多