A command-line interface tool for managing Cisco Catalyst 9800 Wireless Network Controllers.
- π Multi-Controller Support: Efficiently operate several Wireless Network Controllers
- π§ Easy Operations: Focus on key tasks without remembering many complex wireless commands or syntax
- π Secure API: All operations use RESTCONF with token-based authentication and TLS encryption
- π Shell-Friendly Design: Use shell featuresβpiping, loops, scriptingβfor advanced automation workflows
- π Clear Output: Able to show data in table format optimized for easy reading and script processing
π‘ This CLI provides a lightweight and efficient alternative to certain features of Cisco Catalyst Center.
Cisco Catalyst 9800 Wireless Network Controller running Cisco IOS-XE 17.12.x
.
There are two ways to install this CLI:
docker run ghcr.io/umatare5/wnc
Download binaries from the release page.
Supported Platforms: linux_amd64
, linux_arm64
, darwin_amd64
and darwin_arm64
First, activate RESTCONF on the WNC. This CLI requires RESTCONF to communicate with the WNC.
Tip
Programmability Configuration Guide, Cisco IOS XE is a good reference for enabling RESTCONF.
You must create a Basic Auth token using your Cisco WNC credentials before using the CLI.
# Create token for username:password
echo -n "admin:your-password" | base64
# Output: YWRtaW46eW91ci1wYXNzd29yZA==
Start with this simple example to verify your WNC connection and credentials.
# Generate authentication token
wnc generate token -u <username> -p <password>
# View controller overview
wnc show overview --controllers "https://wnc1.example.internal:$WNC_ACCESS_TOKEN"
Customize CLI behavior using command-line flags to optimize for your specific environment and requirements.
# Increase timeout for slow networks
wnc show overview --controllers "https://wnc1.example.internal:$WNC_ACCESS_TOKEN" --timeout 30
# Skip certificate verification (development only)
wnc show overview --controllers "https://wnc1.example.internal:$WNC_ACCESS_TOKEN" --insecure
Caution
The --insecure
flag disables TLS certificate verification. This should only be used in development environments or when connecting to controllers with self-signed certificates. Never use this option in production environments as it compromises security.
This CLI provides following commands for interacting with Cisco Catalyst 9800 WNC subsystems.
Note
Currently, this CLI do not support enough APIs. This will be implemented by the future release v1.0.0
.
Generate secure authentication tokens for CLI operations.
Command | Description | Documentation |
---|---|---|
wnc generate token |
Generate basic auth token from username/password | π GENERATE_TOKEN.md |
Extend and enhance the native show - summary
commands of C9800 WNC.
Command | Description | Documentation |
---|---|---|
wnc show overview |
Display the summary of 2.4 GHz, 5GHz and 6GHz. | π SHOW_OVERVIEW.md |
wnc show ap |
Display the summary of associated APs. | π SHOW_AP.md |
wnc show ap-tag |
Display the summary of tag names with the status. | π SHOW_AP_TAG.md |
wnc show client |
Display the summary of associated clients. | π SHOW_CLIENT.md |
wnc show wlan |
Display the summary of configured WLANs. | π SHOW_WLAN.md |
Please use telee as an alternative for executing commands on the WNC.
Note
As of June 2025, the exec
command is not yet implemented.
Reset an AP:
telee -H wnc1 -C "ap name <apName> reset"
Deauthenticate a client:
# By MAC address
telee -H wnc1 -C "wireless client mac-address <clientMac> deauthenticate"
# By IP address
telee -H wnc1 -C "wireless client ip-address <clientIpAddr> deauthenticate"
# By username
telee -H wnc1 -C "wireless client username <userName> deauthenticate"
This repository includes comprehensive unit and integration tests to ensure reliability and compatibility with Cisco Catalyst 9800 controllers. For detailed testing information, please see TESTING.md.
If you encounter issues, please see the TROUBLESHOOTING.md for common problems and solutions.
I welcome contributions to improve this CLI. Please follow these guidelines to ensure smooth collaboration.
- Fork the repository and create a feature branch from
main
- Make your changes following existing code style and conventions
- Add comprehensive tests for new functionality
- Update documentation including README.md and code comments
- Ensure all tests pass including unit and integration tests
- Submit a pull request with a clear description of changes
To release a new version:
- Update the version in the
VERSION
file - Submit a pull request with the updated
VERSION
file
Once merged, the GitHub Workflow will automatically:
- Create and push a new tag based on the
VERSION
file
After that, manual release using GitHub Actions: release workflow.
This code was developed with the assistance of GitHub Copilot Agent Mode. I extend our heartfelt gratitude to the global developer community who have contributed their knowledge, code, and expertise to open source projects and public repositories.
Please see the LICENSE file for details.