UniFi Client Manager is a Python project that provides a set of scripts to automate various tasks related to managing client devices in a UniFi network managed by a UDM SE (UniFi Dream Machine Special Edition) using the UniFi Controller API. The project includes scripts for updating client information, forgetting devices, and testing the API connectivity.
- Update client names and assign fixed IP addresses based on a CSV file (
update_clients.py
). - Forget devices based on MAC addresses provided in a CSV file (
forget_devices_unifi.py
). - Test the connectivity and functionality of the UniFi Controller API endpoints (
test_api.py
).
- Python 3.x
requests
librarypython-dotenv
libraryurllib3
library
-
Clone the repository or download the project files.
-
Navigate to the project directory:
cd unifi-client-manager
-
Install the required Python packages:
pip install -r requirements.txt
-
Create a
.env
file in the project directory and provide the following information:UDM_URL=https://your-udm-se-url UDM_SITE=your-site-name CSRF_TOKEN=your-csrf-token SESSION_COOKIE=your-session-cookie
Replace
your-udm-se-url
,your-site-name
,your-csrf-token
, andyour-session-cookie
with the actual values obtained from your UDM SE setup. The cookie and csrf are both easily captured by logging into your UDM and copying the cookie and csrf token from the browser. This will only work for the session time of the cookie.
-
Prepare a CSV file (
client_list.csv
) with the client information. The CSV file should have the following columns:mac_address
: The MAC address of the client device.name
: The desired name for the client device.fixed_ip
(optional): The fixed IP address to assign to the client device.
Place the CSV file in the
data
directory. -
Run the
update_clients.py
script:python update_clients.py
The script will authenticate with the UDM SE, retrieve the existing client list, and update the client information based on the CSV file. If a client doesn't exist, it will be created.
-
Prepare a CSV file (
forget_devices.csv
) with the MAC addresses of the devices you want to forget. The CSV file should have the following column:mac_address
: The MAC address of the device to forget.
Place the CSV file in the
data
directory. -
Run the
forget_devices_unifi.py
script:python forget_devices_unifi.py
The script will read the MAC addresses from the CSV file and send requests to the UniFi Controller API to forget the corresponding devices.
-
Run the
get_active_clients.py
script:python get_active_clients.py
The script will retrieve the active clients from the UniFi Controller API and save the information to a CSV file (
active_clients.csv
) in thedata
directory. You can modify the script to reduce or customize what fields are saved to the CSV file.
-
Run the
get_historic_clients.py
script:python get_historic_clients.py
The script will retrieve the historic or currently disconnected clients from the UniFi Controller API and save the information to a CSV file (
historic_clients.csv
) in thedata
directory. You can modify the script to reduce or customize what fields are saved to the CSV file.
-
Run the
get_unifi_clients.py
script:python get_unifi_clients.py
The script will retrieve the list of UniFi devices from the UniFi Controller API and save the information to a CSV file (
unifi_devices.csv
) in thedata
directory. You can modify the script to reduce or customize what fields are saved to the CSV file.
-
Run the
test_api.py
script:python test_api.py
The script will test the connectivity to the UDM SE and various API endpoints, including
/self
,/stat/sta
, and/rest/user
. It creates a test client with a randomly generated MAC address, verifies the accessibility of the endpoints, and then cleans up the test client by forgetting it.
unifi-client-manager/
├── .env
├── .gitignore
├── README.md
├── requirements.txt
├── forget_devices_unifi.py
├── get_active_clients.py
├── get_historic_clients.py
├── get_unifi_clients.py
├── test_api.py
├── update_clients.py
└── data/
├── active_clients.csv
├── client_list.csv
├── forget_devices.csv
├── historic_clients.csv
└── unifi_devices.csv
.env
: Contains sensitive information like the UDM SE URL, site name, CSRF token, and session cookie..gitignore
: Specifies files and directories to be ignored by version control.README.md
: Provides information and instructions for the project.requirements.txt
: Lists the required Python packages.forget_devices_unifi.py
: Script to forget devices based on MAC addresses provided in a CSV file.get_active_clients.py
: Script to retrieve the active clients from the UniFi Controller API.get_historic_clients.py
: Script to retrieve the historic or currently disconnected clients from the UniFi Controller API.test_api.py
: Script to test the connectivity and functionality of the UniFi Controller API endpoints.update_clients.py
: Script to update client information using the UniFi Controller API.data/
: Directory to store the CSV files containing client information and MAC addresses.
- The scripts assume you have the necessary permissions to perform these actions on your UDM SE.
- The scripts disable SSL verification to handle self-signed certificates. Adjust the code accordingly based on your specific setup and security requirements.
- The
.env
file and thedata
directory are ignored by version control to prevent sensitive information from being accidentally committed.
Special thanks to the contributors of the unofficial Ubiquiti UniFi Controller API documentation. Their efforts in creating and maintaining the UniFi Controller API documentation made this project possible. While I had to update some of the endpoints and methods, their work was invaluable in getting started.