2015-04-21 16 views
6

Potrzebuję pobrać listę adresów IP telefonów z Cisco Unified Call Manager i chciałbym móc to zrobić za pomocą Perla i standardowych modułów tak bardzo jak to możliwe.Używanie Perla do uzyskania listy adresów IP z Cisco Call Manager

Mogę uzyskać adresy przy użyciu snmpwalk (używamy SNMP v3), ale z jakiegoś powodu, kiedy używam istniejącego kodu, aby spróbować zrobić to samo przez SNMP lub Net :: SNMP, najbardziej otrzymuję jeden adres IP . Nie mogę sprawić, by którykolwiek dostarczył mi pełną listę.

Oto moja komenda 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 

Jestem również coraz pole telefon opis (156.1.2.1.1.4) i łączących te dwa pola w pliku tekstowym, dzięki czemu można ich używać do kwerendy same telefony używają LWP.

Byłoby świetnie móc połączyć te dwie funkcje w jeden skrypt, aby uzyskać adres IP i zapytać telefon o jego szczegóły.

Czy ktoś ma kod, który to robi?

Edit:

snmpwalk powraca (cała masa z nich):

SNMPv2-SMI::enterprises.9.9.156.1.2.1.1.6.100 = IpAddress: xxx.xxx.xxx.xxx 
kod

My Perl, które zwraca jeden adres IP (muszę wpisywać, bo to na zamkniętej sieci bez Dostęp do Internetu):

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); 
} 
+0

proszę [edytuj] Twoje pytanie pokazać '' SNMP.pm' lub kod Net :: SNMP' napisałeś, że zwraca tylko jeden adres IP. Pokaż również wyniki 'snmpwalk' i dane wyjściowe twojego skryptu. Z ciekawości, jakie były posty Stack Overflow z uszkodzonymi linkami? Byłoby miło, gdybyśmy mogli to naprawić. – ThisSuitIsBlackNot

+0

Jednym z napotkanych wpisów jest ten: http://stackoverflow.com/questions/100620/how-do-i-get-the-mac-address-or-ipaddress-crom-a-cisco-callmanager/2184270 # 2184270 – user141715

+3

Oryginalny post został zmodyfikowany za pomocą kodu i wyników snmpwalk – user141715

Odpowiedz

0

można to zrobić z dyni i wysłać XML do kwerendy risdb ponieważ tylko zarejestrowani telefony IP będą miały adresy:

curl -s -k -u axluser:${AXLPASSWORD} -H 'Content-type: text/xml;' -H 'SOAPAction: "CUCM:DB ver=8.0"' -d @ris_reg.xml https://x.x.x.x:8443/realtimeservice/services/RisPort | xmllint --format - > ris_reg_8.log 

Patrz:

ris_reg.xml:<?xml version="1.0" encoding="utf-8"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <soapenv:Body> 
    <ns1:SelectCmDevice soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://schemas.cisco.com/ast/soap/"> 
     <StateInfo xsi:type="xsd:string"/> 
     <CmSelectionCriteria href="#id0"/> 
    </ns1:SelectCmDevice> 
    <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:CmSelectionCriteria" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://schemas.cisco.com/ast/soap/"> 
     <MaxReturnedDevices xsi:type="xsd:unsignedInt">0</MaxReturnedDevices> 
     <Class xsi:type="xsd:string">Phone</Class> 
     <Model xsi:type="xsd:unsignedInt">503</Model> 
     <Status xsi:type="xsd:string">Registered</Status> 
     <NodeName xsi:type="xsd:string" xsi:nil="true"/> 
     <SelectBy xsi:type="xsd:string">Name</SelectBy> 
     <SelectItems soapenc:arrayType="ns2:SelectItem[1]" xsi:type="soapenc:Array"> 
     <item href="#id1"/> 
     </SelectItems> 
    </multiRef> 
    <multiRef id="id1" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns3:SelectItem" xmlns:ns3="http://schemas.cisco.com/ast/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> 
     <Item xsi:type="xsd:string">*</Item> 
    </multiRef> </soapenv:Body> </soapenv:Envelope>