https://github.com/umatare5/wnc
A shell-friendly CLI for Cisco Catalyst 9800 WLCs, designed for easy operation and powerful automation workflows via RESTCONF
https://github.com/umatare5/wnc
9800 cisco cli go network restconf wireless wlc wnc
Last synced: 3 months ago
JSON representation
A shell-friendly CLI for Cisco Catalyst 9800 WLCs, designed for easy operation and powerful automation workflows via RESTCONF
- Host: GitHub
- URL: https://github.com/umatare5/wnc
- Owner: umatare5
- License: mit
- Created: 2025-06-26T17:16:14.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-06-26T17:54:53.000Z (3 months ago)
- Last Synced: 2025-06-26T18:34:02.583Z (3 months ago)
- Topics: 9800, cisco, cli, go, network, restconf, wireless, wlc, wnc
- Language: Go
- Homepage:
- Size: 270 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Security: docs/SECURITY.md
Awesome Lists containing this project
README
# π‘ wnc - Wireless Network Controller CLI

[](https://pkg.go.dev/github.com/umatare5/wnc)
[](https://goreportcard.com/report/github.com/umatare5/wnc)
[](https://github.com/umatare5/wnc/blob/main/LICENSE)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](https://www.cisco.com/site/us/en/products/networking/catalyst-center/index.html).
## π‘ 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
```bash
docker run ghcr.io/umatare5/wnc
```### π₯ Binary Download
Download binaries from the [release page](https://github.com/umatare5/wnc/releases).
**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](https://www.cisco.com/c/en/us/td/docs/ios-xml/ios/prog/configuration/1712/b_1712_programmability_cg/m_1712_prog_restconf.html) 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.
```bash
# 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.
```bash
# Generate authentication token
wnc generate token -u -p# 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.
```bash
# 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](./docs/commands/GENERATE_TOKEN.md) |### π Show Commands
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](./docs/commands/SHOW_OVERVIEW.md) |
| `wnc show ap` | Display the summary of associated APs. | [π SHOW_AP.md](./docs/commands/SHOW_AP.md) |
| `wnc show ap-tag` | Display the summary of tag names with the status. | [π SHOW_AP_TAG.md](./docs/commands/SHOW_AP_TAG.md) |
| `wnc show client` | Display the summary of associated clients. | [π SHOW_CLIENT.md](./docs/commands/SHOW_CLIENT.md) |
| `wnc show wlan` | Display the summary of configured WLANs. | [π SHOW_WLAN.md](./docs/commands/SHOW_WLAN.md) |### β‘ Exec Commands
Please use [telee](https://github.com/umatare5/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:**
```bash
telee -H wnc1 -C "ap name reset"
```**Deauthenticate a client:**
```bash
# By MAC address
telee -H wnc1 -C "wireless client mac-address deauthenticate"# By IP address
telee -H wnc1 -C "wireless client ip-address deauthenticate"# By username
telee -H wnc1 -C "wireless client 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](./docs/TESTING.md)**.
## π οΈ Troubleshooting
If you encounter issues, please see the **[TROUBLESHOOTING.md](./docs/TROUBLESHOOTING.md)** for common problems and solutions.
## π€ Contributing
I welcome contributions to improve this CLI. Please follow these guidelines to ensure smooth collaboration.
1. **Fork the repository** and create a feature branch from `main`
2. **Make your changes** following existing code style and conventions
3. **Add comprehensive tests** for new functionality
4. **Update documentation** including README.md and code comments
5. **Ensure all tests pass** including unit and integration tests
6. **Submit a pull request** with a clear description of changes## π Release
To release a new version:
1. **Update the version** in the `VERSION` file
2. **Submit a pull request** with the updated `VERSION` fileOnce 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](https://github.com/umatare5/wnc/actions/workflows/release.yaml).
## π 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](./LICENSE) file for details.