mcpField
E
ez-unifi

ez-unifi

github.com/araa47クラウド・DevOps137 回インストール16 週間前に更新
リポジトリ

ez-unifi について

ez-unifiは、`aiounifi`を使ってUniFiネットワークを管理するコマンドラインツールです。エージェントやネットワーク管理者向けに、デバイス、クライアント、無線ネットワーク、トラフィックポリシーなどの操作を提供します。

主な機能

  1. 01サイト、システム情報、ネットワーク状態の確認
  2. 02ネットワークデバイスの調査と制御
  3. 03スイッチポートとPoEの管理
  4. 04クライアントとWLANの確認・制御
  5. 05トラフィックルール、防火壁ポリシー、バウチャーの管理
  6. 06イベントのストリーミングと生APIリクエスト

活用シーン

  1. 01UniFiサイトとネットワーク状態の確認
  2. 02デバイスの再起動・更新とスイッチポート管理
  3. 03クライアントのブロックやWLAN設定の変更
  4. 04トラフィックポリシーの確認やホットスポット用バウチャーの作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/araa47/ez-unifi --skill ez-unifi

インストール後、Claude Code で/ez-unifiを入力して読み込まれたか確認します。

同梱ファイルscripts/unifi.py

詳細

ez-unifi

aiounifi ライブラリを活用した、エージェント向けの UniFi Network ツールです。UDM Pro/SE、Dream Machine、Cloud Key Gen2+、セルフホスト型コントローラーに対応しています。

すべてのコマンドは次の形式で実行します: uv run scripts/unifi.py <command> [args]

セットアップ

ステップ 1:専用のローカル管理者アカウントを作成してもらいます

UniFi ネットワークを管理するには、API アクセスが必要です。専用のローカル管理者アカウントを作成してください:

  1. UniFi コントローラーを開きます(例:https://192.168.1.1)
  2. Settings → System → Admins & Users に移動します
  3. Add Admin をクリックします
  4. ユーザー名を入力します(例:agent-api)
  5. メールアドレスとパスワードを入力します
  6. 重要:「Remote Access」を無効にします - ローカル限定にすると MFA の問題を回避できます
  7. 役割を Super Admin または Site Admin に設定します
  8. Add をクリックします

次の情報を提供してください:

  • コントローラーの IP アドレス(例:192.168.1.1)
  • ユーザー名
  • パスワード
  • UDM Pro/SE/Dream Machine ですか?(はい/いいえ)

ステップ 2:認証情報を .env に保存します

UNIFI_HOST=https://192.168.1.1
UNIFI_USERNAME=agent-api
UNIFI_PASSWORD=the_password
UNIFI_SITE=default
UNIFI_IS_UDM=true

Cloud Key Gen1 またはセルフホスト型コントローラーの場合は、UNIFI_IS_UDM=false に設定してください。


システムとサイト

unifi.py sites                     # List all sites
unifi.py sysinfo                   # System information
unifi.py health                    # Site health status (WAN, WLAN, LAN)

デバイス(AP、スイッチ、ゲートウェイ)

unifi.py devices                   # List all devices
unifi.py device MAC                # Device details
unifi.py restart MAC               # Restart device
unifi.py restart MAC --hard        # Hard restart (cycles PoE on switches)
unifi.py upgrade MAC               # Upgrade device firmware
unifi.py locate MAC                # Blink LED to locate
unifi.py unlocate MAC              # Stop LED blinking
unifi.py led MAC on|off|default    # Set LED status
unifi.py led MAC on --color=#FF0000 --brightness=50  # With color/brightness

スイッチポート

unifi.py ports                     # List all switch ports
unifi.py port MAC PORT_IDX         # Port details
unifi.py port-enable MAC PORT_IDX  # Enable switch port
unifi.py port-disable MAC PORT_IDX # Disable switch port
unifi.py poe MAC PORT_IDX MODE     # Set PoE mode (auto|off|passthrough|24v)
unifi.py power-cycle MAC PORT_IDX  # Power cycle a PoE port

スマート電源(PDU/コンセント)

unifi.py outlets                   # List all outlets
unifi.py outlet MAC IDX on|off     # Control outlet relay
unifi.py outlet-cycle MAC IDX on|off  # Enable/disable auto-cycle on internet down

クライアント

unifi.py clients                   # List active clients
unifi.py clients-all               # List all clients (including offline/known)
unifi.py client MAC                # Client details
unifi.py block MAC                 # Block client from network
unifi.py unblock MAC               # Unblock client
unifi.py reconnect MAC             # Kick/reconnect client
unifi.py forget MAC [MAC2...]      # Forget client(s) permanently

WiFi ネットワーク

unifi.py wlans                     # List wireless networks
unifi.py wlan ID                   # WLAN details
unifi.py wlan-enable ID            # Enable WLAN
unifi.py wlan-disable ID           # Disable WLAN
unifi.py wlan-password ID NEWPASS  # Change WLAN password
unifi.py wlan-qr ID                # Generate WiFi QR code (PNG file)
unifi.py wlan-qr ID -o myqr.png    # Custom output filename

ポートフォワーディング

unifi.py port-forwards             # List port forwarding rules
unifi.py port-forward ID           # Port forward details

トラフィックルール

unifi.py traffic-rules             # List traffic rules
unifi.py traffic-rule ID           # Traffic rule details
unifi.py traffic-rule-enable ID    # Enable traffic rule
unifi.py traffic-rule-disable ID   # Disable traffic rule
unifi.py traffic-rule-toggle ID on|off  # Toggle traffic rule state

トラフィックルート

unifi.py traffic-routes            # List traffic routes
unifi.py traffic-route ID          # Traffic route details
unifi.py traffic-route-enable ID   # Enable traffic route
unifi.py traffic-route-disable ID  # Disable traffic route

ファイアウォール

unifi.py firewall-policies         # List firewall policies
unifi.py firewall-policy ID        # Firewall policy details
unifi.py firewall-zones            # List firewall zones
unifi.py firewall-zone ID          # Firewall zone details

DPI(ディープパケットインスペクション)

unifi.py dpi-apps                  # List DPI restriction apps
unifi.py dpi-app ID                # DPI app details
unifi.py dpi-app-enable ID         # Enable DPI app restriction
unifi.py dpi-app-disable ID        # Disable DPI app restriction
unifi.py dpi-groups                # List DPI restriction groups
unifi.py dpi-group ID              # DPI group details

ホットスポットバウチャー

unifi.py vouchers                  # List vouchers
unifi.py voucher-create --duration=60 --quota=1 --note="Guest"
unifi.py voucher-create --duration=1440 --quota=5 --rate-up=5000 --rate-down=10000
unifi.py voucher-delete ID         # Delete voucher

バウチャーのオプション:

  • --duration - 有効期間(分、デフォルト:60)
  • --quota - 使用回数(デフォルト:1)
  • --usage-quota - 使用量の上限(MB)
  • --rate-up - アップロード速度の上限(Kbps)
  • --rate-down - ダウンロード速度の上限(Kbps)
  • --note - メモ/説明

イベント

unifi.py events                    # Stream events in real-time (Ctrl+C to stop)

生 API アクセス

unifi.py raw GET /stat/health      # Raw GET request
unifi.py raw POST /cmd/devmgr '{"cmd":"restart","mac":"aa:bb:cc:dd:ee:ff"}'
unifi.py raw PUT /rest/wlanconf/ID '{"enabled":false}'

出力オプション

一覧表示コマンドには --json フラグを追加すると、JSON 形式で出力できます:

unifi.py devices --json            # JSON output
unifi.py clients --json

使用例

# Check network health
uv run scripts/unifi.py health

# List all connected clients
uv run scripts/unifi.py clients

# Block a device
uv run scripts/unifi.py block "aa:bb:cc:dd:ee:ff"

# Restart an access point
uv run scripts/unifi.py restart "11:22:33:44:55:66"

# Disable guest WiFi
uv run scripts/unifi.py wlan-disable "5f8b3d2e1a4c7b9e0d6f8a2c"

# Upgrade device firmware
uv run scripts/unifi.py upgrade "11:22:33:44:55:66"

# Power cycle a PoE port (useful for rebooting PoE devices)
uv run scripts/unifi.py power-cycle "switch_mac" 5

# Create a guest voucher (24 hours, single use)
uv run scripts/unifi.py voucher-create --duration=1440 --quota=1 --note="Guest access"

# Generate WiFi QR code for easy connection
uv run scripts/unifi.py wlan-qr "wlan_id" -o guest_wifi.png

# Control traffic rule
uv run scripts/unifi.py traffic-rule-disable "rule_id"

ID の確認方法

  • WLAN ID:wlans を実行し、ID 列を確認します
  • デバイスの MAC アドレス:devices を実行し、MAC 列を確認します
  • クライアントの MAC アドレス:clients または clients-all を実行し、MAC 列を確認します
  • トラフィックルールの ID:traffic-rules を実行し、ID 列を確認します
  • バウチャーの ID:vouchers を実行し、ID 列を確認します

注意事項

  • MAC アドレスはどの形式でも指定できます(コロンあり、ハイフンあり、なし)
  • 解析しやすいよう、すべての出力は JSON です
  • 専用のローカルアカウントを使用すると、クラウド連携アカウントで発生する MFA の問題を回避できます
  • レート制限(429 エラー)が発生した場合は、数分待ってから再試行してください

コメント