TestPtoaPto / app.py
doctorlinux's picture
Update app.py
ec48fc4 verified
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()