2015-04-21 3 views
6

Je dois récupérer une liste d'adresses IP de téléphones de Cisco Unified Call Manager, et j'aimerais pouvoir le faire en utilisant Perl et les modules standard autant possible.Utilisation de Perl pour obtenir la liste des adresses IP de Cisco Call Manager

Je peux obtenir les adresses en utilisant snmpwalk (nous utilisons SNMP v3) mais pour une raison quelconque lorsque j'utilise le code existant pour essayer de faire la même chose via SNMP ou Net :: SNMP, le maximum est une adresse IP . Je ne peux pas avoir l'un ou l'autre pour me donner la liste complète.

Voici ma commande 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 

Je suis aussi obtenir le champ téléphone Description (156.1.2.1.1.4) et la fusion de ces deux champs dans un fichier texte que je peux les utiliser pour interroger la téléphones eux-mêmes en utilisant LWP.

Ce serait génial de pouvoir combiner ces deux fonctions en un seul script pour obtenir l'adresse IP et interroger le téléphone pour ses détails spécifiques.

Est-ce que quelqu'un a du code qui le fait?

Edit:

retourne snmpwalk (tout un tas de ces):

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

code Perl Mon qui retourne une adresse IP (je dois retaper parce qu'il est sur un réseau fermé sans Accès 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

S'il vous plaît [modifier] votre question pour montrer le '' SNMP.pm' ou Code Net :: SNMP' vous avez écrit qui retourne une seule adresse IP. Montre également les résultats de 'snmpwalk' et la sortie de votre script. Par curiosité, quels étaient les posts de Stack Overflow avec les liens brisés? Ce serait bien si nous pouvions les réparer. – ThisSuitIsBlackNot

+0

L'un des messages que j'ai trouvé est celui-ci: http://stackoverflow.com/questions/100620/how-do-i-get-the-mac-address-or-ipaddress-from-cisco-callmanager/2184270 # 2184270 – user141715

+3

La publication originale a été éditée avec le code et les résultats snmpwalk – user141715

Répondre

0

Vous pouvez le faire avec curl et envoyer un fichier XML pour interroger le risdb puisque seuls les téléphones enregistrés auront IP adresses:

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 

Voir:

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>