Ubiquiti UniFi
Device CLI
Yes, the UniFi switches actually have a CLI... who knew! No you don't have to wait three minutes for the Unifi controller to update... 🙃
You can make configuration changes from the cli, but they will not be persistent across reboots or resyncs with the controller.
cli
# or
telnet localhost
show running-config
# wouldn't it be nice if Ubiquiti would actually share this information from the controller!?!?!
show lldp neighbor
show interfaces GigabitEthernet 1 status
show interfaces GigabitEthernet 1-8 status
show interfaces GigabitEthernet 1-26 status
show interfaces GigabitEthernet 1-52 status
# example output
USW-48-G2# show interfaces GigabitEthernet 1-8
<cr>
protected Configure an interface to be a protected port
status Port status information
JRN1A-SW2-USW-48-G2# show interfaces GigabitEthernet 1-52 status
Port Name Status Vlan Duplex Speed Type
gi1 Port 1 notconnect 11 auto auto Copper
gi2 Port 2 connected 11 a-full a-100M Copper
gi3 Port 3 connected 11 a-full a-1000M Copper
gi4 Port 4 notconnect 11 auto auto Copper
gi5 Port 5 connected 11 a-full a-1000M Copper
gi6 Port 6 notconnect 11 auto auto Copper
gi7 Port 7 notconnect 11 auto auto Copper
gi8 Port 8 notconnect 11 auto auto Copper
show vlan
show vlan 2 interfaces GigabitEthernet 1-52 membership
# show 802.1x configuration for a port or multiple ports
show authentication interfaces GigabitEthernet 1
show authentication interfaces GigabitEthernet 1-24
show authentication interfaces GigabitEthernet 1-48
# show 802.1x authentication sessions
show authentication sessions
# example output with MAC Addresses redacted
USW-48-G2# show authentication sessions
Total Session Number: 13
Interface MAC Address Type Status Session ID
---------- ----------------- ------- ------------ ----------------
gi3 XX:YY:ZZ:11:22:33 mac Guest 0000000100015C5C
gi5 XX:YY:ZZ:11:22:33 mac Guest 0000000200015C5C
gi26 XX:YY:ZZ:11:22:33 mac Guest 0000000300015D10
gi40 XX:YY:ZZ:11:22:33 mac Guest 0000000500015F0E
gi39 XX:YY:ZZ:11:22:33 mac Guest 0000000700016256
gi34 XX:YY:ZZ:11:22:33 mac Guest 0000000A00016DAA
gi18 XX:YY:ZZ:11:22:33 mac Guest 0000000D00017930
gi2 XX:YY:ZZ:11:22:33 dot1x Authorized 0000000E000180B0
gi43 XX:YY:ZZ:11:22:33 dot1x Authorized 0000000F000188EE
gi20 XX:YY:ZZ:11:22:33 dot1x Authorized 00000012003531F1
gi24 XX:YY:ZZ:11:22:33 dot1x Authorized 00000013004F754C
gi28 XX:YY:ZZ:11:22:33 dot1x Authorized 00000016006F8AB7
gi31 XX:YY:ZZ:11:22:33 dot1x Authorized 0000001700731DA1
# configure
(config)# interface GigabitEthernet 34
(config-if)# shutdown
(config-if)# no shutdown
Random Stuff
List users in the UniFi Controller database
# show list of users in the unifi mongodb database
mongo --port 27117 ace --eval "db.admin.find().forEach(printjson);"
Change password for a UniFi Controller user
# change <UserName> to an actual user on the unifi controller
# the command will reset that user password to 'password'
mongo --port 27117 ace --eval 'db.admin.update( { "name" : "<UserName>" }, { $set : { "x_shadow" : "$6$GgQYRQnUs4wYkRd$7g6mig.les9salut9CZjUrG/UqqF6R/2RiCaCQEpEzz/7UtAtzeeQsVDnacAW1el2KH/jvUuJ4Eh08xy.KGl0/" } } )'
Decrypt a UniFi Controller backup
Force dhcp to renew ip address
- Get the PID of the udhcpc process
- Send that process the USR1 signal which tells udhcpc to renew its IP address 👍
# find the PID of the udhcpc process
ps | grep udhcpc
# output of the above command
4052 admin 3480 S /sbin/udhcpc -f -i eth0 -V ubnt -A 10 -s /etc/udhcpc/udhcpc -p /var/run/udhcpc.eth0.pid
6648 admin 3504 R sh /usr/etc/syswrapper.sh ssh-trace-cmd -c ps | grep udhcpc -n 4 -i
6650 admin 3480 R grep udhcpc
# instruct udhcpc to renew its IP address by sending it's process the USR1 signal
kill -USR1 4052
Manually removing items from mongo
# Connect using the traditional mongo shell on UniFi's default port
mongo --port 27117
# If your UniFi version uses the newer mongosh shell:
mongosh --port 27117
// ===========================================================
// Once inside the shell, switch to the primary UniFi database
use ace
// ===========================
// Force forget a ghost device
// For modern UniFi setups (MongoDB 5.0+)
db.device.deleteMany({"mac":"xx:xx:xx:xx:xx:xx"})
// For older UniFi setups
db.device.remove({"mac":"xx:xx:xx:xx:xx:xx"})
// ===========================
// Delete Stale Client History
db.user.deleteMany({"mac":"xx:xx:xx:xx:xx:xx"})
// =======================
// Delete an Admin Profile
db.admin.deleteMany({"email":"admin@example.com"})
// =============
// apply changes
// On Linux / Ubuntu
sudo systemctl restart unifi
// On Cloud Key / UDM
init 6 or restart via the OS Settings Console
:end