102 lines
3.6 KiB
Python
102 lines
3.6 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Prueba para verificar que se muestren todos los puertos, incluidos los sin MACs conectadas.
|
|
"""
|
|
|
|
import requests
|
|
import json
|
|
import ssl
|
|
import urllib3
|
|
|
|
# Deshabilitar advertencias SSL
|
|
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
|
|
|
def test_all_ports():
|
|
"""Prueba que el servicio muestre todos los puertos, no solo los con MACs"""
|
|
|
|
# Configuración de la prueba
|
|
url = "https://localhost:8443/api/mac-table"
|
|
|
|
payload = {
|
|
"cisco_ip": "10.150.226.19",
|
|
"ssh_username": "ruser",
|
|
"ssh_password": "pass123",
|
|
"use_legacy_ssh": True
|
|
}
|
|
|
|
headers = {
|
|
"Content-Type": "application/json"
|
|
}
|
|
|
|
try:
|
|
print("Realizando petición HTTPS POST al servicio...")
|
|
print(f"URL: {url}")
|
|
print(f"Payload: {json.dumps(payload, indent=2)}")
|
|
|
|
response = requests.post(
|
|
url,
|
|
json=payload,
|
|
headers=headers,
|
|
verify=False,
|
|
timeout=30
|
|
)
|
|
|
|
print(f"\nRespuesta HTTP: {response.status_code}")
|
|
print(f"Headers de respuesta: {dict(response.headers)}")
|
|
|
|
if response.status_code == 200:
|
|
data = response.json()
|
|
print(f"\nRespuesta exitosa:")
|
|
print(json.dumps(data, indent=2))
|
|
|
|
# Analizar puertos
|
|
if 'data' in data:
|
|
ports_with_macs = 0
|
|
ports_without_macs = 0
|
|
total_ports = len(data['data'])
|
|
|
|
for item in data['data']:
|
|
interface = item.get('{#INTERFACE}', '')
|
|
mac_count = item.get('MAC_COUNT', 0)
|
|
|
|
if mac_count > 0:
|
|
ports_with_macs += 1
|
|
else:
|
|
ports_without_macs += 1
|
|
|
|
print(f"\n=== ANÁLISIS DE PUERTOS ===")
|
|
print(f"Total de puertos detectados: {total_ports}")
|
|
print(f"Puertos con MACs conectadas: {ports_with_macs}")
|
|
print(f"Puertos sin MACs (vacíos): {ports_without_macs}")
|
|
|
|
# Mostrar algunos ejemplos
|
|
print(f"\n=== EJEMPLOS DE PUERTOS ===")
|
|
for i, item in enumerate(data['data'][:10]): # Solo los primeros 10
|
|
interface = item.get('{#INTERFACE}', '')
|
|
mac_count = item.get('MAC_COUNT', 0)
|
|
mac_addresses = item.get('MAC_ADDRESSES', '')
|
|
print(f"{i+1}. {interface}: {mac_count} MACs")
|
|
if mac_count > 0:
|
|
print(f" MACs: {mac_addresses[:100]}...") # Truncar para legibilidad
|
|
|
|
# Verificar que hay puertos sin MACs
|
|
if ports_without_macs > 0:
|
|
print(f"\n✅ ÉXITO: Se detectaron {ports_without_macs} puertos vacíos (MAC_COUNT=0)")
|
|
else:
|
|
print(f"\n⚠️ ADVERTENCIA: No se detectaron puertos vacíos")
|
|
|
|
else:
|
|
print("❌ Error: No se encontró 'data' en la respuesta")
|
|
|
|
else:
|
|
print(f"❌ Error HTTP {response.status_code}")
|
|
print(f"Mensaje: {response.text}")
|
|
|
|
except requests.exceptions.ConnectionError as e:
|
|
print(f"❌ Error de conexión: {e}")
|
|
print("Asegúrate de que el contenedor esté ejecutándose en puerto 8443")
|
|
except Exception as e:
|
|
print(f"❌ Error inesperado: {e}")
|
|
|
|
if __name__ == "__main__":
|
|
test_all_ports() |