我需要从 Cisco Unified Call Manager 中检索电话的 IP 地址列表,并且我希望能够尽可能使用 Perl 和标准模块来完成。
我可以使用 snmpwalk 获取地址(我们使用的是 SNMP v3),但是由于某种原因,当我使用现有代码尝试通过 SNMP 或 Net::SNMP 做同样的事情时,我得到的最多是一个 IP 地址。我似乎无法让任何一个给我完整的清单。
这是我的 snmpwalk 命令:
snmpwalk -v3 -u <user> -A <password> -l authNoPriv -a SHA <ip address> 1.3.6.1.4.1.9.9.156.1.2.1.1.6
我还获得了电话描述字段 (156.1.2.1.1.4) 并将这两个字段合并到一个文本文件中,这样我就可以使用它们来使用 LWP 查询电话本身。
如果能够将这两个功能组合到一个脚本中以获取 IP 地址并查询电话以获取其具体详细信息,那就太好了。
有没有人有这样做的代码?
编辑:
snmpwalk 返回(一大堆):
SNMPv2-SMI::enterprises.9.9.156.1.2.1.1.6.100 = IpAddress: xxx.xxx.xxx.xxx
我的 Perl 代码返回一个 IP 地址(我必须重新键入它,因为它位于无法访问 Internet 的封闭网络上):
use SNMP;
my $ccmip = "xxx.xxx.xxx.xxx";
my $user = "<username>";
my $pass = "<password>";
$sess = new SNMP::Session(DestHost => $ccmip, SecName => $user, SecLevel => 'authnoPriv', AuthPass => $pass, AuthProto => 'SHA', PrivProto => 'AES', PrivPass => $pass, Version => 3);
my $vars = new SNMP::VarList(['1.3.6.1.4.1.9.9.156.1.2.1.1.6']);
my @values = $sess->getnext($vars);
my @table = ();
while ((!$sess->{ErrorStr})) {
push(@table, $values[0]);
@values = $sess->getnext($vars);
}