360 Secure SkillHub
360 安全技能中心

Unifi

通过 Python 脚本调用 UniFi 本地网关或云 API,自动在两者间路由,查询主机、站点、设备、客户端、网络、WLAN、射频、固件与事件,并可修改 WLAN、DNS、射频配置和客户端标签,全部命令支持 --json 输出。

odrobnik
odrobnik
热度 58.53
最近更新 2026-05-11 16:24:59
分类:自动化依赖:代码执行 / 第三方 API / 读写文件应用场景:自动化脚本 / 工作流 / API 集成

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add unifi-site-manager
Metadata
name
unifi-site-manager
version
3.2.1
homepage
https://github.com/odrobnik/unifi-skill
description
Monitor and configure UniFi network infrastructure. Auto-routes between local gateway and cloud connector. Manage hosts, sites, devices, clients, WLANs, radios, firmware, and events.
metadata
{"openclaw":{"requires":{"env":["UNIFI_API_KEY"],"optionalEnv":["UNIFI_BASE_URL","UNIFI_GATEWAY_IP","UNIFI_LOCAL_API_KEY"]}}}

UniFi Network API

Monitor and configure UniFi network infrastructure.

Entry point: {baseDir}/scripts/unifi.py

Setup

See SETUP.md for prerequisites and setup instructions.

Config (config.json):

  • api_key — UniFi Cloud API key (required)
  • gateway_ip — Local gateway IP (for faster local access)
  • local_api_key — Local gateway API key
  • site_id — Default site UUID (auto-detected if only one site)

Routing is automatic: local gateway when reachable, cloud connector when remote. Use --local to force local-only.

Commands

All commands support --json for raw JSON output.

Infrastructure

python3 {baseDir}/scripts/unifi.py list-hosts              # Controllers/consoles
python3 {baseDir}/scripts/unifi.py list-sites              # Sites with statistics
python3 {baseDir}/scripts/unifi.py list-devices            # All network devices (summary)
python3 {baseDir}/scripts/unifi.py list-site-devices       # Devices with rich detail (ports, radios, features)
python3 {baseDir}/scripts/unifi.py list-aps                # Access points only
python3 {baseDir}/scripts/unifi.py get-device <device_id>  # Single device details
python3 {baseDir}/scripts/unifi.py firmware-status         # Firmware versions + update availability

Clients

python3 {baseDir}/scripts/unifi.py list-clients              # Currently connected clients
python3 {baseDir}/scripts/unifi.py list-clients --detailed    # With traffic/signal stats
python3 {baseDir}/scripts/unifi.py list-known-clients         # All known clients (current + historical)
python3 {baseDir}/scripts/unifi.py list-known-clients --named # Only clients with custom names
python3 {baseDir}/scripts/unifi.py list-ap-clients            # Wireless clients grouped by AP
python3 {baseDir}/scripts/unifi.py list-ap-clients --ap Living  # Filter by AP name
python3 {baseDir}/scripts/unifi.py get-client <client_id>     # Single client details
python3 {baseDir}/scripts/unifi.py label-client <mac> "Name"  # Set custom name for a client

Networks & WLANs

python3 {baseDir}/scripts/unifi.py list-networks             # Configured networks (VLANs)
python3 {baseDir}/scripts/unifi.py get-wlan-config            # WLAN/SSID configurations
python3 {baseDir}/scripts/unifi.py get-wlan-config --ssid Hogwarts  # Specific SSID
python3 {baseDir}/scripts/unifi.py set-wlan --ssid Hogwarts \
  --fast-roaming on \
  --bss-transition on \
  --pmf required \
  --band-steering prefer_5g

Network DNS

python3 {baseDir}/scripts/unifi.py get-network-dns              # All networks
python3 {baseDir}/scripts/unifi.py get-network-dns Default       # Specific network
python3 {baseDir}/scripts/unifi.py set-network-dns Default \
  --dns1 1.1.1.1 --dns2 1.0.0.1                                 # Set DNS servers
python3 {baseDir}/scripts/unifi.py set-network-dns Default \
  --dns1 auto                                                    # Disable override (use gateway)

Radio Configuration

python3 {baseDir}/scripts/unifi.py get-radio-config           # Radio config for all APs
python3 {baseDir}/scripts/unifi.py get-radio-config --ap Living  # Specific AP
python3 {baseDir}/scripts/unifi.py set-radio --ap Living --band 5 \
  --channel 36 --width 80 --power high

Events

python3 {baseDir}/scripts/unifi.py list-events                # All site events
python3 {baseDir}/scripts/unifi.py list-events --filter Roam   # Filter by event type
python3 {baseDir}/scripts/unifi.py list-events --mac aa:bb:cc:dd:ee:ff  # Filter by MAC

Notes

  • Site is auto-detected when only one exists; use --site <siteId> otherwise
  • --local forces local gateway access (errors if unreachable)
  • Event buffer is limited (~3 weeks of history depending on volume)
  • Apple devices use randomized MACs; use label-client to track them by their per-network Wi-Fi Address