artofrf.com

Ali's Technology Blog

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

Python: Adding description to Multiple Juniper Switch Ports

Posted on April 19, 2021April 23, 2021 by mali

Adding descriptions to switch port is beneficial, I have always done it and it always helps when trying to troubleshoot, as long as those descriptions are up to date of course.

I am new to programming and python and I think it is safe to say after seeing it in action and creating few of my own newbie scripts I am addicted.

I had to work on adding bunch of port descriptions on Juniper EX3400 switch ports. Doing it one at a time is no fun when you have to do multiple ports at a time. I decided to do this via python. After some trial and error I was able to come up with a script that uses an input of the Device ID and a CSV file to push out the changes.

I created a simple CSV file, that looked like this:

Sample CSV

I am using dynamic ports on my lab switch so I started with this:

Next I ran my code, provided the device ID of my switch and got successful results. Screen shots below show the change based on what was in the CSV file.

API View
Dashboard View
Mouse Over View
#NOTE:  THERE IS NO CONFIG MERGING.  IT WILL OVER WRITE AND/OR CLEAR EXISTING PORT CONFIGURATION(S)
import json
import csv
import requests
from IPython.core.display import display

#This will ask the user to Enter Device ID.
device_id = input('Enter Device ID:')
validation = 'You Entered:'
display(validation + device_id)

#~~Site ID + Base URL~~
base_url = 'https://api.mist.com/api/v1/sites/:site-id/devices/'
#Add device ID to base URL
url = base_url + device_id
print(url)

#This csv file will contain all the port numbers and their descriptions
with open('sw_vars.csv', 'r') as csv_file:
    reader = csv.reader(csv_file)
#    next(reader)
    devices = list(reader)
#    print(devices)
for port,description in devices:
#    print(port,description)

    payload= {
        "port_config": {},
    }
for idx, (port,description) in enumerate(devices):
    if idx == 0:
        continue # This line skips the header
    payload["port_config"][port] = {"description": description}
#print(json.dumps(payload))
data = (json.dumps(payload))
print(data)
headers = {
	'Content-Type': 'application/json',
	'Authorization': 'Token Your-Token-Goes-Here'
}
response = requests.request("PUT", url, headers=headers, data=data)
print('\n''Script Finished')

#NOTE: THERE IS NO CONFIG MERGING. IT WILL OVER WRITE AND/OR CLEAR EXISTING PORT CONFIGURATION(S). I have the script and sample csv file located at my GitHub Repo – artofrf.

Category: Juniper/Mist, Python

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