Mostrando las entradas con la etiqueta pandas. Mostrar todas las entradas
Mostrando las entradas con la etiqueta pandas. Mostrar todas las entradas

viernes, febrero 05, 2021

Librería CDPDiscovery

 Cree está librería para obtener la información de vecinos de equipos Cisco ( IOS y sb300) que tienen vía CDP y guardarla en una tabla. La librería cuenta con 3 funciones:

 cisco_ios: función para obtener la información de un equipo Cisco IOS.

cisco_sg300:  función para obtener la información de un equipo Cisco sg300.

bulk: función que recibe un listado en csv con ip del equipo, comunidad SNMP y tipo de equipo (cisco_ios y cisco_sg300) 

Instalación

Debemos descargar la librería desde github:

git clone https://github.com/cabildocl/cdpdiscovery 

cd  cdpdiscovery

Ejecutar Python y cargar la librería:

from cdpdiscovery import *

 Ya podemos utilizar la librería de 2 formas, la primera  utilizando directamente las funcione cisco_ios y cisco_sg300 como mostramos a continuación:

python3

from cdpdiscovery import *

## sobre un equipos cisco IOS , IP 192.168.1.10 y comunidad SNMP publica

cisco_ios("192.168.1.10","publica")

salida

local local_if       remote             remote_if       remote_ip                                remote_model
0  SW-CORE   gi1/21  SW-ACCESS  GigabitEthernet0/0/1  192.168.1.100                              
cisco WS-C3850-48XS
1  SW-CORE   gi1/21  MPBB-WLC-01  GigabitEthernet0/0/2  192.168.1.11                               AIR-CT2504-K9

También podemos utilizar la función bulk que recibe un archivo csv, con al lista de equipos, su IP, clave SNMP y tipo. Un  ejemplo viene incluido en el archivo device.csv.example.






jueves, agosto 20, 2020

Extraer informacion de Cisco DNA Center con Python

 Aquí les muestro y explico como extraer información de la API Assurance del Cisco DNA Center como pasos principales los siguientes:

  • definimos el body  y el header de la consulta, lo principal es que consultamos por los últimos 5 minutos.
  • Nos autenticamos con el DNA Center a traves de la función de autenticacion
  • Realizamos el request para obtener la información
  • Y al final la información la transformamos en un dataframe de Pandas.
  
    
#!/usr/bin/python3
import requests
import json
import pandas as pd
from pandas.io.json import json_normalize
from requests.auth import HTTPBasicAuth
import time
from datetime import datetime
headers = {
              'content-type': "application/json",
              'x-auth-token': ""
          }
### definimos rango de tiempo inicio(atras) y fin(ahora)
### en hora unix y en milisegundos
ahora=int(time.time()*1000)
atras= ahora - (5*60*1000)


### Este es el cuerpo de la consulta donde se filtra por fecha 
### y por tipo
body='{"startTime":'+str(atras)+',"endTime":'+str(ahora)+',"limit":1000,"offset":1,"filters":{"kpi":[{"kpiAttr":"LAST_UPDATED","condition":[{"name":"decr","value":[]}]}],"scoreType":[],"devType":["WIRELESS"],"typeIdList":["__global__"]}}'


### Funcion login DNA
def dnac_login(host, username, password):
    url = "https://{}/api/system/v1/auth/token".format(host)
    response = requests.request("POST", url, auth=HTTPBasicAuth(username, password), verify=False)
    return response.json()["Token"]


## Me registro en el DNA y obtengo token
token = dnac_login("Ip_DNA:port", "user", "password")
### Consulta la API /api/assurance/v1/host
### utilizamos el token obtenido y el body creado al principio
url="https://Ip_DNA:port/api/assurance/v1/host"
headers["x-auth-token"] = token


### hacemos la consulta
response = requests.post(url, headers=headers, data=body, verify=False)
 

### Transformo la respuesta en un dataframe
response.json()['response']
df = json_normalize(response.json()['response'])