我需要从Cisco Unified Call Manager检索电话的IP地址列表,并希望能够尽可能使用Perl和标准模块来完成。
我可以使用snmpwalk(我们正在使用SNMP v3)获取地址,但出于某种原因,当我尝试使用现有的代码通过SNMP或Net::SNMP执行相同的操作时,我只能得到一个IP地址。 我似乎无法让它们中的任何一个给我完整的列表。
这是我的snmpwalk命令:
我还要获取手机描述字段(156.1.2.1.1.4),并将这两个字段合并到一个文本文件中,以便我可以使用它们来使用LWP查询电话本身。
将这两个功能合并成一个脚本来获取IP地址并查询特定详细信息将是很好的。
有人有能够做到这一点的代码吗?
编辑:
snmpwalk返回(大量这些):
我可以使用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地址(由于它在一个没有网络访问权限的封闭网络上,我必须重新输入它):
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);
}
1.3.6.1.2.1.1.9
。如果可以的话,如果您能创建一个最小化、完整化、可验证的示例,演示您的问题,并且其他人可以简单地复制和运行它们自己的系统(当然不包括凭据),那将非常有帮助。 - ThisSuitIsBlackNot