π‘ wnc - Wireless Network Controller CLI

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.
π‘ Supported Environment
Cisco Catalyst 9800 Wireless Network Controller running Cisco IOS-XE 17.12.x.
π¦ Installation
There are two ways to install this CLI:
π³ Docker
docker run ghcr.io/umatare5/wnc
π₯ Binary Download
Download binaries from the release page.
Supported Platforms: linux_amd64, linux_arm64, darwin_amd64 and darwin_arm64
π Quick Start
π§ Prerequisites
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.
π Creating Basic Auth Token
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==
π Basic Usage
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"
βοΈ Advanced Configuration
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.
π CLI Reference
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 Commands
Generate secure authentication tokens for CLI operations.
| Command |
Description |
Documentation |
wnc generate token |
Generate basic auth token from username/password |
π GENERATE_TOKEN.md |
π Show Commands
Extend and enhance the native show - summary commands of C9800 WNC.
β‘ Exec Commands
Please use telee as an alternative for executing commands on the WNC.
[!Note]
As of June 2025, the exec command is not yet implemented.
π§ Use Case Examples
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"
π§ͺ Testing
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.
π οΈ Troubleshooting
If you encounter issues, please see the TROUBLESHOOTING.md for common problems and solutions.
π€ Contributing
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
π Release
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.
π Acknowledgments
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.
π License
Please see the LICENSE file for details.