Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| import requests | |
| import time | |
| def test_antena(ip, usuario, password): | |
| try: | |
| session = requests.Session() | |
| login_url = f"http://{ip}/api/login" | |
| login_data = {"username": usuario, "password": password} | |
| response = session.post(login_url, json=login_data, timeout=10) | |
| if response.status_code == 200: | |
| status_url = f"http://{ip}/api/v1/status" | |
| status_response = session.get(status_url, timeout=10) | |
| if status_response.status_code == 200: | |
| resultado = "✅ CONEXIÓN EXITOSA\n\n" | |
| resultado += f"IP: {ip}\n" | |
| resultado += f"Usuario: {usuario}\n" | |
| resultado += f"Hora: {time.strftime('%H:%M:%S')}\n\n" | |
| resultado += "📊 Métricas obtenidas correctamente via API" | |
| return resultado | |
| else: | |
| return f"⚠️ LOGIN OK pero no métricas\n\nError status: {status_response.status_code}" | |
| else: | |
| return f"❌ ERROR DE LOGIN\n\nCódigo: {response.status_code}" | |
| except Exception as e: | |
| return f"🔴 ERROR DE CONEXIÓN\n\nDetalle: {str(e)}" | |
| # Interfaz con área de resultados GRANDE | |
| with gr.Blocks() as demo: | |
| gr.Markdown("# 📡 TEST UBIQUITI") | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| ip_input = gr.Textbox(label="IP del equipo", value="192.168.1.24") | |
| user_input = gr.Textbox(label="Usuario", value="admin") | |
| pass_input = gr.Textbox(label="Contraseña", type="password") | |
| btn = gr.Button("🚀 EJECUTAR TEST", variant="primary") | |
| with gr.Column(scale=2): | |
| # Área de resultados MÁS GRANDE | |
| output = gr.Textbox( | |
| label="RESULTADOS", | |
| lines=10, # 10 líneas de alto | |
| max_lines=20, | |
| show_copy_button=True | |
| ) | |
| btn.click( | |
| fn=test_antena, | |
| inputs=[ip_input, user_input, pass_input], | |
| outputs=output | |
| ) | |
| demo.launch() |