我正在尝试使用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上也可以完美运行。
答案 0 :(得分:1)
可选地,可以使用
-authkey
参数,以便不必在脚本中指定纯文本密码。-authkey
参数需要通过使用特定目标设备的authoritativeEngineID本地化密码而生成的十六进制字符串。分发中包含的snmpkey实用程序可用于创建十六进制字符串(请参阅snmpkey)。[...]
-privkey
和-privpassword
参数分别与-authkey
和-authpassword
参数的输入相同。
snmpkey实用程序使用密码和 SNMPEngineID(与每个SNMP实体关联的标识符)来创建密钥,因此只需将密码转换为十六进制即可获胜工作
答案 1 :(得分:0)
只需使用-authpassword,-privpassword代替-authkey,-privkey