artofrf.com

Ali's Technology Blog

Menu
  • Home
  • Important Links
  • About Me
  • Tools and Scripts
Menu

CLI to UI – Nile Guest APIs

Posted on August 25, 2026 by mali

Few years back in my career, I recall having to configure 10, 20, 30 switches, controllers, at times multiple autonomous access points. This required separate configuration for each device. Editing configurations in notepad, duplicating and customizing them for each device, copy paste into multiple devices was a pretty common thing. I am all about efficiency and trying to always find a better way of doing things. Automation meant something very different than what it means today to me. I took an excel document, put together some formulas and macros to create a standard config that can be easily generated using some variables.

I would fill in a hostname, a VLAN ID, a management IP, any other specific information and the macro would spit out a block of IOS commands ready to paste into a terminal. That was the cutting edge for me back then. And honestly, it worked. I configured and deployed a whole lot of devices this way.

Excel - Cisco network switch automation

This was still a lot of work and any typo would mess up the configuration, manual process of copy and pasting the config and validating it on every device.

Python

What does a snake have to do with networking? While working on a project I learned that I can create a Python script that can log into a device, grab the data into some format I want and save it for me. Check out My First Python Script. This was exciting, being able to go from Excel to an actual programming language and make it automate something that you have to do it multiple times.

The API Awakening

Next stage for this evolution was me hearing about the APIs when I started working with Mist Products. Their APIs opened up something I hadn’t experienced before; the ability to interact with the network programmatically. I started learning Python, not because I wanted to become a developer (yeah seriously, I wouldn’t call myself a developer), but because I wanted to pull data faster than the GUI could show it to me, customize the data how I wanted it and/or my customers wanted it. Check out some of my projects under Tools and Scripts. I wrote scripts to pull AP stats, push WLAN configs, configured templates for multiple device configs and automate things that would’ve taken dozens of clicks in a dashboard.

Mist’s API was my gateway into real automation and realizing the possibilities. I learned about REST calls, JSON payloads, authentication tokens, error handling, going from CLI to APIs was an amazing experience in so many ways.

No Devices to Configure – Now What?

So I start my new job at Nile get my hands on some equipment and this realization hit me.

There are no individual device configurations. None. No AP configs, no switch templates, no per-device profiles. The Nile architecture abstracts all of that away into a service-level model. All access is based on the context and Identity.

I wasn’t going to give up because as I mentioned I am all about optimizing and making things efficient if I can. I found Nile APIs, but instead of writing a script to push configs to devices, I’m writing a script that says “create a guest access code for this portal with this expiration.” The API isn’t about managing infrastructure it’s about managing what the network does for people.

The Python Script:

My first attempt was a python script that worked with the Nile Guest APIs. Goal was to build something that will basically have a simple menu driven work flow to create, edit and delete the Guest Codes.

I figured I can simply share this with my customers as well and they can edit and use it however they see fit via github. See demo below.

Something came to my mind, anyone who wanted to use it needed Python installed on their machine and not break things in the script. This is something I can see a technical person using. But what about if the outcome needed is for a non technical person to be able to easily use this. Let’s say a person handling the reception, or an event coordinator etc needs to create the codes, edit them, delete them, bulk upload multiple codes. UI is the answer.

From Script to UI:

I believe to achieve the outcome mentioned above, this will need a web based UI. Just go to a webpage, enter credentials and you are good to go. Created a work flow, took the python script, Cloudflare and Claude code.

  • Frontend: React 18 with Vite, no TypeScript, no Tailwind, no CSS framework. Just hand-written CSS and functional components.
  • Backend: A Cloudflare Worker acting as a relay a thin serverless function at the edge that proxies requests to Nile’s REST API. Takes care of the Cross-Origin Resource Sharing (CORS).
  • Infrastructure: Cloudflare Pages hosting the frontend, the Worker handling the backend. No database. No server framework. (Atleast for now, not looking to get into something complicated because storing someones data leads to other complications and I’m not interested in that for this public UI).

Features:

Here is list of features that I have been able to add.

  • Authenticate with your Nile API key
  • Pull down your configured guest portals and select one
    • There are three possibilities for the portals
    • Portal that requires e-mail work flow (nothing to do there)
    • Portal with generic access codes
    • Portal with non-generic access codes
  • Create individual guest access codes with custom expiration
  • Bulk create codes by uploading a CSV perfect for events or onboarding batches
  • Edit existing codes extend expiration, update details
  • Delete codes you no longer need
Nile Guest APIs - Portal workflow

This pretty much can be used by anyone, no installation, dependencies, terminals, CLI etc.

What This Means:

I think taking APIs, building something useful around them, and then turning that into something other people can use is pretty awesome. The tools available to us now compared to back when I was using Excel macros to generate CLI configs; it’s a completely different world.

The shift from CLI to API to UI isn’t just about tools changing. It’s about what we spend our time on changing. When the infrastructure layer is abstracted away and you’re not burning cycles on per-device configs, you get to focus on building things that actually make the network useful to the people who use it. Building something that a user can open in a browser and accomplish in a few clicks, that’s the shift..

That’s what “CLI to UI” really means. I won’t make a blanket statement and say CLI is dead or not — everyone can form their own opinion on that. Everyone is trying to automate these days and the goal behind automation is standardization, efficiency, less errors, stability for instance. What I feel is that the endpoint of our work is shifting from configuring devices to delivering outcomes.

You can try the tool yourself at niletools.artofrf.com. See a little demo below.

Next up: CLI to UI – Nile Access Management APIs.

Category: Nile, Nile Secure, Nile Wi-Fi, Uncategorized

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Recent Posts

  • CLI to UI – Nile Guest APIs
  • Nile Secure Guest – Configuration and Use Case
  • WLAN Pros Toolbox
  • Nile does NAC – Configuring Trust Engine
  • WLAN Validator

Tags

#MFD9 - Juniper Presents AP W318 arista Arista AGNI Arista CV-CUE Arista Hospitality AP Arista NAC Arista presents at MFD9 Arista wall plate AP Arista WIPS Arista WPA3 UPSK Aruba Central Automation CWAP 403 EAP Format MAC Addresses Hamina Network Planner Juniper Mist show cloud-native NAC Juniper SRX300 Marvis MFD8 MFD9 MistAI Mist MPSK Mist Premium Analytics Mist Wireless NaaS Networking Field Day NFD32 Nile APIs NileNav Nile Secure Nile Wi-Fi Tech Field Day Troubleshooting with Marvis Troubleshooting with Mist Troubleshooting with Mist AI Troubleshooting with Wireshark True NaaS Wireless Adjuster Wireless Adjuster Level II Wireless troubleshooting WLPC wlpc2023 Wyebot

Tech Blogs

  • CCNA Wireless
  • Cisco Full Bars
  • Packet Life
  • The ASCII Construct
  • Juniper Port Checker
  • Bad-Fi
  • Gjermund Raaen
  • Havilandweb
  • WiFiTodd
  • BadgerWiFi
  • WiFrizzy
  • Spectrum Chart

Recent Comments

  • Hiten Thakkar on PCAP I/O Graph Analyzer
  • mali on Deploying Nile Secure – My First NSB
  • Larry Farrish on Deploying Nile Secure – My First NSB
  • Courtney on Mist Access Point – CSV
  • ayoub chabrouk on Ubiquiti stealing the show at MFD11

Archives

  • August 2026
  • July 2026
  • March 2026
  • February 2026
  • December 2025
  • November 2025
  • October 2025
  • August 2025
  • May 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • September 2023
  • August 2023
  • June 2023
  • May 2023
  • April 2023
  • February 2023
  • November 2022
  • October 2022
  • August 2022
  • July 2022
  • June 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • May 2021
  • April 2021
  • March 2021
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • April 2019
  • March 2019
  • November 2018
  • October 2018
  • September 2018
  • May 2018
  • January 2018
  • December 2017
  • August 2017
  • January 2017
  • September 2014
  • December 2013
  • October 2013
  • May 2013
  • August 2012
  • July 2012

Meta

  • Log in
  • Entries feed
  • Comments feed
  • WordPress.org

Categories

  • AeroHive
  • Arista
  • Arista
  • Aruba
  • Aruba
  • Aruba Central
  • BYoD
  • Certifications
  • Cisco
  • Cisco
  • Cisco EEM Scripting
  • Cisco Routing
  • Cisco Security
  • Cisco VoIP
  • Cisco VPN
  • Cisco Wireless
  • Conferences and Meetings
  • Design
  • Ekahau
  • General
  • Hamina
  • IoT, IIoT, OT
  • Juniper Security
  • Juniper Switching
  • Juniper/Mist
  • Linux
  • Microsoft
  • Mist
  • Mist Wireless
  • Nile
  • Nile Secure
  • Nile Wi-Fi
  • Programming/Automation
  • Python
  • Ruckus
  • Ruckus Wireless
  • Ruckus/Brocade
  • Ruckus/Brocade Scripting
  • Ruckus/Brocade Switching
  • Secure Guest Service
  • Security
  • Switching
  • Tools
  • Troubleshooting
  • Trust Engine
  • Uncategorized
  • Windows
  • Wireless
  • Wireless
  • WLAN Tools
© 2026 artofrf.com | Powered by Minimalist Blog WordPress Theme