2015-04-21 16 views
6

Ho bisogno di recuperare un elenco di indirizzi IP dei telefoni da Cisco Unified Call Manager, e mi piacerebbe poterlo fare usando Perl e moduli standard tanto il più possibileUtilizzo di Perl per ottenere l'elenco degli indirizzi IP da Cisco Call Manager

Posso ottenere gli indirizzi utilizzando snmpwalk (stiamo usando SNMP v3) ma per qualche ragione quando uso il codice esistente per provare a fare la stessa cosa tramite SNMP o Net :: SNMP, il massimo che ottengo è un indirizzo IP . Non riesco a ottenere nessuno dei due a darmi la lista completa.

Qui è il mio comando 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 

Sto anche ricevendo il telefono campo Descrizione (156.1.2.1.1.4) e la fusione questi due campi in un file di testo in modo che io possa usare per interrogare il telefoni stessi usando LWP.

Sarebbe bello poter combinare queste due funzioni in uno script per ottenere l'indirizzo IP e interrogare il telefono per i suoi dettagli specifici.

Qualcuno ha codice che fa questo?

Edit:

rendimenti snmpwalk (un intero gruppo di questi):

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

mio Perl che restituisce un indirizzo IP (devo digitare nuovamente perché è su una rete chiusa, senza Accesso a 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); 
} 
+0

Si prega di [modifica] La tua domanda per mostrare la SNMP.pm' o '' codice Net :: SNMP' hai scritto che restituisce un solo indirizzo IP. Mostra anche i risultati di 'snmpwalk' e l'output del tuo script. Per curiosità, quali sono stati i post Stack Overflow con i collegamenti interrotti? Sarebbe bello se potessimo aggiustarli. – ThisSuitIsBlackNot

+0

Uno dei post che ho trovato è questo: http://stackoverflow.com/questions/100620/how-do-i-get-the-mac-address-or-ipaddress-from-a-cisco-callmanager/2184270 # 2184270 – user141715

+3

Il post originale è stato modificato con il codice e i risultati snmpwalk – user141715

risposta

0

È possibile farlo con arricciatura e inviare un XML per interrogare il risdb poiché solo i telefoni registrati avranno IP indirizzi:

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 

See:

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>