{"id":29182535,"url":"https://github.com/umatare5/wnc","last_synced_at":"2025-07-01T20:06:39.982Z","repository":{"id":301407740,"uuid":"1009162225","full_name":"umatare5/wnc","owner":"umatare5","description":"A shell-friendly CLI for Cisco Catalyst 9800 WLCs, designed for easy operation and powerful automation workflows via RESTCONF","archived":false,"fork":false,"pushed_at":"2025-06-26T17:54:53.000Z","size":276,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-26T18:34:02.583Z","etag":null,"topics":["9800","cisco","cli","go","network","restconf","wireless","wlc","wnc"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/umatare5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"docs/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-26T17:16:14.000Z","updated_at":"2025-06-26T18:12:31.000Z","dependencies_parsed_at":"2025-06-26T18:36:35.377Z","dependency_job_id":"6840eb5b-5a43-464c-a5f1-0903bf43b5f3","html_url":"https://github.com/umatare5/wnc","commit_stats":null,"previous_names":["umatare5/wnc"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/umatare5/wnc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umatare5%2Fwnc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umatare5%2Fwnc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umatare5%2Fwnc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umatare5%2Fwnc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/umatare5","download_url":"https://codeload.github.com/umatare5/wnc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/umatare5%2Fwnc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263029214,"owners_count":23402354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["9800","cisco","cli","go","network","restconf","wireless","wlc","wnc"],"created_at":"2025-07-01T20:06:37.603Z","updated_at":"2025-07-01T20:06:39.961Z","avatar_url":"https://github.com/umatare5.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 📡 wnc - Wireless Network Controller CLI\n\n![GitHub Tag](https://img.shields.io/github/v/tag/umatare5/wnc?label=Latest%20version)\n[![Go Reference](https://pkg.go.dev/badge/umatare5/wnc.svg)](https://pkg.go.dev/github.com/umatare5/wnc)\n[![Go Report Card](https://goreportcard.com/badge/github.com/umatare5/wnc)](https://goreportcard.com/report/github.com/umatare5/wnc)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/umatare5/wnc/blob/main/LICENSE)\n\nA command-line interface tool for managing Cisco Catalyst 9800 Wireless Network Controllers.\n\n- **🚀 Multi-Controller Support**: Efficiently operate several Wireless Network Controllers\n- **🧠 Easy Operations**: Focus on key tasks without remembering many complex wireless commands or syntax\n- **🔒 Secure API**: All operations use RESTCONF with token-based authentication and TLS encryption\n- **🐚 Shell-Friendly Design**: Use shell features—piping, loops, scripting—for advanced automation workflows\n- **📊 Clear Output**: Able to show data in table format optimized for easy reading and script processing\n\n\u003cimg alt=\"Demo of wnc show overview\" src=\"https://github.com/umatare5/wnc/blob/main/docs/demo/wnc_show_overview_demo.gif\" /\u003e\n\n💡 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).\n\n## 📡 Supported Environment\n\nCisco Catalyst 9800 Wireless Network Controller running Cisco IOS-XE `17.12.x`.\n\n## 📦 Installation\n\nThere are two ways to install this CLI:\n\n### 🐳 Docker\n\n```bash\ndocker run ghcr.io/umatare5/wnc\n```\n\n### 📥 Binary Download\n\nDownload binaries from the [release page](https://github.com/umatare5/wnc/releases).\n\n**Supported Platforms:** `linux_amd64`, `linux_arm64`, `darwin_amd64` and `darwin_arm64`\n\n## 🚀 Quick Start\n\n### 🔧 Prerequisites\n\nFirst, activate RESTCONF on the WNC. This CLI requires RESTCONF to communicate with the WNC.\n\n\u003e [!TIP]\n\u003e\n\u003e [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.\n\n### 🔑 Creating Basic Auth Token\n\nYou must create a Basic Auth token using your Cisco WNC credentials before using the CLI.\n\n```bash\n# Create token for username:password\necho -n \"admin:your-password\" | base64\n# Output: YWRtaW46eW91ci1wYXNzd29yZA==\n```\n\n### 🚀 Basic Usage\n\nStart with this simple example to verify your WNC connection and credentials.\n\n```bash\n# Generate authentication token\nwnc generate token -u \u003cusername\u003e -p \u003cpassword\u003e\n\n# View controller overview\nwnc show overview --controllers \"https://wnc1.example.internal:$WNC_ACCESS_TOKEN\"\n```\n\n### ⚙️ Advanced Configuration\n\nCustomize CLI behavior using command-line flags to optimize for your specific environment and requirements.\n\n```bash\n# Increase timeout for slow networks\nwnc show overview --controllers \"https://wnc1.example.internal:$WNC_ACCESS_TOKEN\" --timeout 30\n\n# Skip certificate verification (development only)\nwnc show overview --controllers \"https://wnc1.example.internal:$WNC_ACCESS_TOKEN\" --insecure\n```\n\n\u003e [!CAUTION]\n\u003e 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.\n\n## 🌐 CLI Reference\n\nThis CLI provides following commands for interacting with Cisco Catalyst 9800 WNC subsystems.\n\n\u003e [!Note]\n\u003e Currently, this CLI do not support enough APIs. This will be implemented by the future release `v1.0.0`.\n\n### 🔐 Generate Commands\n\nGenerate secure authentication tokens for CLI operations.\n\n| Command              | Description                                      | Documentation                                             |\n| -------------------- | ------------------------------------------------ | --------------------------------------------------------- |\n| `wnc generate token` | Generate basic auth token from username/password | [📖 GENERATE_TOKEN.md](./docs/commands/GENERATE_TOKEN.md) |\n\n### 📊 Show Commands\n\nExtend and enhance the native `show - summary` commands of C9800 WNC.\n\n| Command             | Description                                       | Documentation                                           |\n| ------------------- | ------------------------------------------------- | ------------------------------------------------------- |\n| `wnc show overview` | Display the summary of 2.4 GHz, 5GHz and 6GHz.    | [📖 SHOW_OVERVIEW.md](./docs/commands/SHOW_OVERVIEW.md) |\n| `wnc show ap`       | Display the summary of associated APs.            | [📖 SHOW_AP.md](./docs/commands/SHOW_AP.md)             |\n| `wnc show ap-tag`   | Display the summary of tag names with the status. | [📖 SHOW_AP_TAG.md](./docs/commands/SHOW_AP_TAG.md)     |\n| `wnc show client`   | Display the summary of associated clients.        | [📖 SHOW_CLIENT.md](./docs/commands/SHOW_CLIENT.md)     |\n| `wnc show wlan`     | Display the summary of configured WLANs.          | [📖 SHOW_WLAN.md](./docs/commands/SHOW_WLAN.md)         |\n\n### ⚡ Exec Commands\n\nPlease use [telee](https://github.com/umatare5/telee) as an alternative for executing commands on the WNC.\n\n\u003e [!Note]\n\u003e\n\u003e As of June 2025, the `exec` command is not yet implemented.\n\n#### 🔧 Use Case Examples\n\n**Reset an AP:**\n\n```bash\ntelee -H wnc1 -C \"ap name \u003capName\u003e reset\"\n```\n\n**Deauthenticate a client:**\n\n```bash\n# By MAC address\ntelee -H wnc1 -C \"wireless client mac-address \u003cclientMac\u003e deauthenticate\"\n\n# By IP address\ntelee -H wnc1 -C \"wireless client ip-address \u003cclientIpAddr\u003e deauthenticate\"\n\n# By username\ntelee -H wnc1 -C \"wireless client username \u003cuserName\u003e deauthenticate\"\n```\n\n## 🧪 Testing\n\nThis 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)**.\n\n## 🛠️ Troubleshooting\n\nIf you encounter issues, please see the **[TROUBLESHOOTING.md](./docs/TROUBLESHOOTING.md)** for common problems and solutions.\n\n## 🤝 Contributing\n\nI welcome contributions to improve this CLI. Please follow these guidelines to ensure smooth collaboration.\n\n1. **Fork the repository** and create a feature branch from `main`\n2. **Make your changes** following existing code style and conventions\n3. **Add comprehensive tests** for new functionality\n4. **Update documentation** including README.md and code comments\n5. **Ensure all tests pass** including unit and integration tests\n6. **Submit a pull request** with a clear description of changes\n\n## 🚀 Release\n\nTo release a new version:\n\n1. **Update the version** in the `VERSION` file\n2. **Submit a pull request** with the updated `VERSION` file\n\nOnce merged, the GitHub Workflow will automatically:\n\n- **Create and push a new tag** based on the `VERSION` file\n\nAfter that, manual release using [GitHub Actions: release workflow](https://github.com/umatare5/wnc/actions/workflows/release.yaml).\n\n## 🙏 Acknowledgments\n\nThis 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.\n\n## 📄 License\n\nPlease see the [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumatare5%2Fwnc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fumatare5%2Fwnc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fumatare5%2Fwnc/lists"}