Skip to content
/ wnc Public

A shell-friendly CLI for Cisco Catalyst 9800 WNC, also called WLC, designed for easy operation and powerful automation via RESTCONF

License

Notifications You must be signed in to change notification settings

umatare5/wnc

Repository files navigation

πŸ“‘ wnc - Wireless Network Controller CLI

GitHub Tag Go Reference Go Report Card License: MIT

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

Demo of wnc show overview

πŸ’‘ 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.

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

⚑ 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.

  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 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.

About

A shell-friendly CLI for Cisco Catalyst 9800 WNC, also called WLC, designed for easy operation and powerful automation via RESTCONF

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •