#!/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()