当我使用带有SNMPv3的-privkey时,为什么Net :: SNMP会出错?

时间:2016-01-07 10:28:00

标签: perl snmp

我正在尝试使用Net::SNMP模块修改使用SNMPv2的脚本来代替使用SNMPv3。

#Define SNMP session
($session, $error) = Net::SNMP->session(
 -hostname     => shift || $hostname,
 -version      => "snmpv3",
 -username     => "user",
 -authprotocol => "md5",
 -authkey      => "password123",
 -privprotocol => "des",
 -privkey      => "password123"
);

当我执行上述操作时,我会收到私钥不是十六进制的投诉:

The privKey "password123" is expected in hexadecimal format

所以我做了十六进制转换:

$privkey = unpack "H*", "password123";

然后我收到关于字符串长度的抱怨:

The CBC-DES privKey length of 10 is invalid, expected 16

有人提供任何建议吗?我正在努力保持安全并使用SNMPv3,但它引起了如此多的麻烦,我很想让它恢复到2c。

哦,只需使用完全相同的凭据进行snmpwalk / snmpget,这在CLI上也可以完美运行。

2 个答案:

答案 0 :(得分:1)

来自Net::SNMP documentation

  

可选地,可以使用-authkey参数,以便不必在脚本中指定纯文本密码。 -authkey参数需要通过使用特定目标设备的authoritativeEngineID本地化密码而生成的十六进制字符串。分发中包含的snmpkey实用程序可用于创建十六进制字符串(请参阅snmpkey)。

     

[...]

     

-privkey-privpassword参数分别与-authkey-authpassword参数的输入相同。

snmpkey实用程序使用密码 SNMPEngineID(与每个SNMP实体关联的标识符)来创建密钥,因此只需将密码转换为十六进制即可获胜工作

答案 1 :(得分:0)

只需使用-authpassword,-privpassword代替-authkey,-privkey