Skip to content
/ unicli Public

Query and control some features of the UniFi controller directly from your command-line.

Notifications You must be signed in to change notification settings

apognu/unicli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UniCLI

Query and control some features of the UniFi controller directly from your command-line.

WARNING: This command-line utility is is not way related to Ubiquiti and is provided as is. It is only developed with the hardware I own and may behave erroneously with your own.

Usage

Settings

UniCLI needs to know three settings in order to work:

  • your UniFi controller's host
  • your username
  • your password

You may create another user, dedicated to be used with UniCLI.

In order to pass those settings to UniCLI, pass the following environment variables to the program: UNIFI_HOST, UNIFI_USERNAME, UNIFI_PASSWORD.

Alternatively, you can create ~/.unicli/profiles.json and list an arbitrary number of UniFI connection profiles, like so:

{
  "default": {
    "host": "https://unifi.acme.com",
    "username": "admin",
    "password": "superpassword"
  },
  "labs": {
    "host": "https://unifi.labs.acme.com",
    "username": "lab",
    "password": "password"
  }
}

If this file exists, by default, the profile named default will be used. You can select a specific profile to be used for the connection with the UNIFI_PROFILE environment variable. In this mode of operation, if any of UNIFI_HOST, UNIFI_USERNAME or UNIFI_PASSWORD is set, they will override the saved profile.

$ UNIFI_PROFILE=labs unicli sites

UniCLI creates ~/.unicli/cookies.json to store fetched cookies and reuse them for the next requests.

Run with docker

You can run UniCLI from Docker with the following command:

$ cd unicli
$ docker run -e UNIFI_HOST=https://10.0.0.1:8443 -e UNIFI_USERNAME=rose.tyler -e UNIFI_PASSWORD=superpassword apognu/unicli:latest devices list

Sites

You can list all your sites with the following command:

$ unicli sites
ID       Name                 Alerts   WAN  GTW   LAN   WLAN   VPN

default  ACME - Headquarters  0        ✓    ✓     ✓     ✓      ✗

You can then use the value in the ID column to scope your request to a specific site (with the -s option). If ommited, the site defaults to default.

Devices

List devices

$ unicli devices list
ID                        Model   Name     State          IP address     MAC address         Uptime      Version            RX bytes    TX bytes

dmu898nx3c4sd8ylb3ctrfhd  UGW3    Gateway  Connected      172.17.0.254   00:11:22:33:44:55   1d 5h 52m   ✓ 4.4.18.5052168   3.53 GB     3.59 GB
dmu898nx3c4sd8ylb3ctrfhd  US24    Switch   Provisionning  172.17.0.1     00:11:22:33:44:55   2d 4h 42m   ✓ 3.9.19.8123      302.66 MB   2.73 GB

Adopt a device

$ unicli devices adopt 00:11:22:33:44:55
Device '00:11:22:33:44:55' is being adopted.

Restart a device

$ unicli devices restart dmu898nx3c4sd8ylb3ctrfhd
Device 'dmu898nx3c4sd8ylb3ctrfhd' is restarting.

Force provisionning of a device

$ unicli devices provision dmu898nx3c4sd8ylb3ctrfhd                                                                                                                                                                                                                 master:48966ca
Device 'dmu898nx3c4sd8ylb3ctrfhd' is provisionning.

List ports on a device

$ unicli devices ports list dmu898nx3c4sd8ylb3ctrfhd
ID  Name      Enabled   Link   STP state    Speed   Duplex   RX bytes    TX bytes

1   Port 1    ✓         UP     forwarding   100     FDX      166.28 MB   611.74 MB
2   Port 2    ✓         UP     forwarding   1000    FDX      337.09 MB   2.38 GB
3   Port 3    ✓         DOWN   disabled     0       HDX      0 B         0 B
4   Port 4    ✓         DOWN   disabled     0       HDX      0 B         0 B
5   Port 5    ✓         DOWN   disabled     0       HDX      0 B         0 B
6   Port 6    ✓         DOWN   disabled     0       HDX      0 B         0 B
7   Port 7    ✓         DOWN   disabled     0       HDX      0 B         0 B
8   Port 8    ✓         DOWN   disabled     0       HDX      0 B         0 B
9   Port 9    ✓         DOWN   disabled     0       HDX      0 B         0 B
10  Port 10   ✓         DOWN   disabled     0       HDX      152.89 KB   3.07 MB
11  Port 11   ✓         DOWN   disabled     0       HDX      0 B         0 B
12  Port 12   ✓         DOWN   disabled     0       HDX      0 B         0 B
13  Port 13   ✓         DOWN   disabled     0       HDX      0 B         0 B
14  Port 14   ✓         DOWN   disabled     0       HDX      0 B         0 B
15  Port 15   ✓         DOWN   disabled     0       HDX      0 B         0 B
16  Port 16   ✓         DOWN   disabled     0       HDX      0 B         0 B
17  Port 17   ✓         DOWN   disabled     0       HDX      0 B         0 B
18  Port 18   ✓         DOWN   disabled     0       HDX      0 B         0 B
19  Port 19   ✓         DOWN   disabled     0       HDX      0 B         0 B
20  Port 20   ✓         DOWN   disabled     0       HDX      0 B         0 B
21  Port 21   ✓         DOWN   disabled     0       HDX      0 B         0 B
22  Port 22   ✓         DOWN   disabled     0       HDX      0 B         0 B
23  Port 23   ✓         DOWN   disabled     0       HDX      0 B         0 B
24  Port 24   ✓         UP     forwarding   1000    FDX      2.73 GB     302.66 MB
25  SFP 1     ✓         DOWN   disabled     0       HDX      0 B         0 B
26  SFP 2     ✓         DOWN   disabled     0       HDX      0 B         0 B

Enable/disable ports on a device

You may use ports range syntax to specify which port to enable or disable. 1,10,20 means ports 1, 10 and 20. 10-20 means ports 10 through 20.

Enabling ports will put them in the default All profile.

unicli devices ports [enable|disable] dmu898nx3c4sd8ylb3ctrfhd 1,2,10-20
Port state for 'dmu898nx3c4sd8ylb3ctrfhd → 1,2,10-20' state changed.

Turn location LED on/off

$ unicli devices locate dmu898nx3c4sd8ylb3ctrfhd on
Location state for 'dmu898nx3c4sd8ylb3ctrfhd' was changed.

Networks

List networks

$ unicli networks list
ID                        Name                  Enabled   Purpose     Subnet             Domain             VLAN

dmu898nx3c4sd8ylb3ctrfhd  00 - Management       ✓         corporate   172.17.0.254/24    mgmt.acme.local
dmu898nx3c4sd8ylb3ctrfhd  10 - WiFi Guests      ✓         guest       172.17.10.254/24   guests.acme.local  10
dmu898nx3c4sd8ylb3ctrfhd  20 - WiFi             ✓         corporate   172.17.20.254/24   wifi.acme.local    20
dmu898nx3c4sd8ylb3ctrfhd  30 - LAN              ✓         corporate   172.17.30.254/24   lan.acme.local     30

List wireless networks

$ unicli networks wlan list
ID                        Name             Enabled   Security   Encryption  VLAN

dmu898nx3c4sd8ylb3ctrfhd  ACME             ✓         wpapsk     wpa2/ccmp   20
dmu898nx3c4sd8ylb3ctrfhd  ACME Guests      ✗         open       wpa2/ccmp   10

Enable/disable wireless networks

$ unicli networks wlan [enable|disable] dmu898nx3c4sd8ylb3ctrfhd
Wireless network 'dmu898nx3c4sd8ylb3ctrfhd' state changed.

Clients

List all clients

$ unicli clients list
MAC address        Manufac.   Hostname  Network          IP address        Last seen    ⇆  Gues.  Auth.   WAN                      LAN

00:11:22:33:44:55  LcfcHefe   tialus    00 - Management                    1 day ago    ✓   ✗      -       ▼ 10.62 MB ▲ 87.98 MB  ▼ 0B ▲ 0B
00:11:22:33:44:55  Ubiquiti                                                2 days ago   ✓   ✗      -       ▼ 0 B ▲ 0 B            ▼ 0B ▲ 0B
00:11:22:33:44:55  Raspberr   alarm     20 - WiFi        192.22.0.253      2 days ago   ✓   ✗      -       ▼ 0 B ▲ 0 B            ▼ 0B ▲ 0B
00:11:22:33:44:55  Lenovo                                                  Never        ✓   ✓      ✓       ▼ 0 B ▲ 0 B            ▼ 0B ▲ 0B

Block/unblock a client

$ unicli clients block 00:12:34:56:78
Client '00:11:22:33:44:55' was blocked.

Vouchers

List all active vouchers

$ unicli vouchers list
ID                        Code          Validity   Usable   Down        Up          Quota   Note

dmu898nx3c4sd8ylb3ctrfhd  51909-50304   1d         ∞        2.05 Mbps   2.05 Mbps   1 GB    Bob Dylan
dmu898nx3c4sd8ylb3ctrfhd  03387-80149   1d         0/1      -           -           -       Mum

Create a voucher

When creating a voucher, you may pass the following options to specify the voucher's parameters:

$ unicli help vouchers create
create a voucher 0.0.1
Antoine POPINEAU <antoine.popineau@appscho.com>

USAGE:
    unicli vouchers create [-n NUMBER] [-e VALIDITY] [-t USAGE] [-c COMMENT] [-q QUOTA] [-d QUOTA_DOWNLOAD] [-u QUOTA_UPLOAD]

OPTIONS:

    -n        how many vouchers to create (default: 1)                          
    -e        validity duration (as ISO8601 durations, e.g. PT24H, etc.)        
              (default: 1440)                                                   
    -t        number of times this voucher can be used (0 for unlimited)        
              (default: 1)                                                      
    -c        comment (default: Created from UniCLI)                            
    -q        usage quota in MB (default: 0)                                    
    -d        download bandwidth limit in Kbps (default: 0)                     
    -u        upload bandwidth limit in Kbps (default: 0)

Nothing fancy here, those map to the same settings that can be found in the UniFi Hotspot manager.

$ unicli vouchers create -e P1W -c "Visitor from space" -q 1024 -d 128 -u 128
Voucher was created.

Revoke a voucher

$ unicli vouchers revoke dmu898nx3c4sd8ylb3ctrfhd
Voucher 'dmu898nx3c4sd8ylb3ctrfhd' was revoked.

Events and alerts

$ unicli events
Time                System   Device          Message

2018/02/22 10:22am           -              Admin[rose.tyler] log in from 172.22.0.101
2018/02/22 10:14am  WLAN     -              User[00:11:22:33:44:55] disconnected from "20 - WiFi" (16m 11s connected, 460.00 bytes)
2018/02/22  9:56am  WLAN     -              User[00:11:22:33:44:55] has connected to 20 - WiFi
2018/02/22  8:49am  WLAN     pegasus        User[00:11:22:33:44:55] has connected to AP[78:8a:20:d0:9f:8f] with ssid "ACME" on "channel 36(na)"
2018/02/22  8:39am  LAN      orion          User[00:11:22:33:44:55] has connected to 00 - Management
2018/02/21  5:19pm  WLAN     CEO Office AP  AP[00:11:22:33:44:55] was connected
2018/02/21  5:18pm  WLAN     CEO Office AP  AP[00:11:22:33:44:55] was restarted by Admin[rose.tyler]

$ unicli alerts
Time                    System   Device   Message

!  2018/02/21  8:21pm   WLAN     AP-A     AP[00:11:22:33:44:55] was disconnected
!  2018/02/21  8:21pm   WLAN     AP-B     AP[00:11:22:33:44:55] was disconnected
✓  2018/02/21  8:21pm   WLAN     AP-A     AP[00:11:22:33:44:55] was disconnected
✓  2018/02/21  8:21pm   WLAN     AP-D     AP[00:11:22:33:44:55] was disconnected
✓  2018/02/21  8:21pm   WLAN     AP-B     AP[00:11:22:33:44:55] was disconnected

RADIUS users

List users

$ unicli radius users list
ID                        Username                        VLAN

dmu898nx3c4sd8ylb3ctrfhd  rose.tyler@acme.com             30
dmu898nx3c4sd8ylb3ctrfhd  martha.jones@acme.com           20
dmu898nx3c4sd8ylb3ctrfhd  amelia.pond@acme.com            20
dmu898nx3c4sd8ylb3ctrfhd  clara.oswald@acme.com           20

Create a user

$ unicli help radius users create
create a new RADIUS user 0.0.1
Antoine POPINEAU <antoine.popineau@appscho.com>

USAGE:
    unicli radius users create [-v VLAN] [-t TUNNEL] [-m MEDIUM] [--site SITE] USERNAME PASSWORD

ARGS:

    USERNAME        username of the RADIUS user
    PASSWORD        password of the RADIUS user

OPTIONS:

    -v                VLAN ID (default: VLAN to put the user into)
    -t                TUNNEL_TYPE (default: ID of the tunnel type)
    -m                TUNNEL_MEDIUM_TYPE (default: ID of the tunnel medium type)
    -s, --site        which site to talk to (default: default)

$ unicli radius users create amelia.pond@acme.com mysuperpassword -v 100 -t 13 -m 6
RADIUS user `amelia.pond@acme.com` was created.

Delete a user

$ unicli radius users delete dmu898nx3c4sd8ylb3ctrfhd
User 'dmu898nx3c4sd8ylb3ctrfhd' was deleted.

About

Query and control some features of the UniFi controller directly from your command-line.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published