Files
openclaw-workspace/skills/unifi/manual_test.py
2026-04-11 09:45:12 -05:00

71 lines
2.0 KiB
Python

#!/usr/bin/env python3
"""UniFi Monitor - To be run manually"""
import requests
import urllib3
from datetime import datetime
# Disable SSL warnings
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
# Config
CONTROLLER = "https://192.168.0.39:8443"
USER = "corey"
PASS = "is41945549"
SITE = "default"
print("="*50)
print("UniFi Network Monitor")
print("="*50)
print(f"Controller: {CONTROLLER}")
print(f"User: {USER}")
print(f"Time: {datetime.now().strftime('%Y-%m-%d %H:%M')}")
print()
# Step 1: Login
print("Step 1: Logging in...")
login_url = f"{CONTROLLER}/api/auth/login"
resp = requests.post(login_url, json={"username": USER, "password": PASS}, verify=False, timeout=10)
print(f" Status: {resp.status_code}")
if resp.status_code != 200:
print(" ❌ Login failed!")
print(f" Response: {resp.text[:200]}")
exit(1)
print(" ✅ Login successful")
cookies = resp.cookies
# Step 2: Get clients
print("\nStep 2: Getting clients...")
clients_url = f"{CONTROLLER}/proxy/network/api/s/{SITE}/stat/sta"
resp = requests.get(clients_url, cookies=cookies, verify=False, timeout=10)
clients = resp.json().get('data', [])
print(f" Found: {len(clients)} clients")
# Step 3: Get devices
print("\nStep 3: Getting devices...")
devices_url = f"{CONTROLLER}/proxy/network/api/s/{SITE}/stat/device"
resp = requests.get(devices_url, cookies=cookies, verify=False, timeout=10)
devices = resp.json().get('data', [])
print(f" Found: {len(devices)} devices")
# Generate report
print("\n" + "="*50)
print("REPORT")
print("="*50)
print(f"\nConnected Clients: {len(clients)}")
wired = [c for c in clients if c.get('is_wired', False)]
wireless = [c for c in clients if not c.get('is_wired', False)]
print(f" - Wireless: {len(wireless)}")
print(f" - Wired: {len(wired)}")
print(f"\nUniFi Devices: {len(devices)}")
for d in devices[:3]:
name = d.get('name', d.get('mac', 'Unknown')[:17])
model = d.get('model', 'Unknown')
print(f" - {name} ({model})")
print("\n" + "="*50)