Toolbox
This page includes a collection of my personal favorite tools, libraries, or resources in general within the area of Network Automation, Software Development and anything that might be useful/interesting in the future.
Python Libraries
- textfsm – utility to parse strings in python based on a state machine with regular expressions, together with the NTC Templates a powerful utility
- Jinja2 – common template language, designed for HTML but frequently used to generate CLI configurations
- Mako – another template language, uses a syntax that sometimes looks like shell scripts
- requests – HTTP client library
- ciscoconfparse – awesome library to extract data from text-based Cisco configuration files (or text data with some level of hierarchy)
- cerberus – library to validate JSON data based on a custom but powerful schema language
- celery – framework to work with asynchronous tasks in python (separate worker or on distributed systems)
- netmiko – multivendor library to simplify the interaction with network devices using SSH and Telnet
- pandas – data analysis library in python to work with large data-sets
- xlrd – library to work with Excel files in python
- openpyxl – another library to work with Excel files in python but easier to use compared with xlrd
- network-to-code netutils – collection of utilities for common network automation tasks
- Junos PyEZ – library to interact with Juniper JUNOS devices based on the XML API
- ncclient – NETCONF client library
- Invoke – library for CLI-invokable tasks
- Click – framework to create command-line tools in python
Web-Development with Python
- Django – powerful, batteries-included web framework for python
- Django REST framework – framework to build REST APIs on top of Django
- FastAPI – async framework to build REST APIs
- Flask – micro framework for web services in python (nowadays I prefer FastAPI/Django)
CSS Frameworks
- MVP – a minimalist stylesheet for HTML elements
- bootstrap – Framework used with the Product Database
- uikit – Framework used with the Network Configuration Generator
Tools
- Jupyter notebooks – web-based notebook format (not only) for python
- packer – utility to create virtual machines in different formats
- vagrant – tool to provision and configure VMs (or entire environments) based on a text file
- ngrok – simple solution to provide a remote connection without exposing resources to the internet
- ansible – powerful batteries-included automation framework that is useful for server automation and DevOps use-cases, but I don’t recommend it for network automation cases because of the maintenance effort that is associated to it
- Cisco Modelling Labs (CML) – Cisco’s solution to simulate/virtualize Network Equipment
- EVE-NG – Alternative solution to simulate/virtualize Network Equipment
- dolt and dolthub – tool to use Git like data together with a MySQL compatible interface
- shell-in-a-box – Web-client for shell sessions to servers
- wetty – good alternative to shell-in-a-box which is better maintained
- Webhook.site – test page for webhooks
- Cisco Advanced NETCONF Explorer – excellent way to test and validate NETCONF interaction of YANG modules against a particular device
Remote Access and VPNs
- Tailscale – awesome tool to create virtual point-to-multipoint VPNs
- Wireguard – simple VPN solution compared to IPsec
- Netbird.io – interesting alternative to Tailscale
NETCONF/YANG Resources
Other Interesting Site/Talks/Articles
- Design Patterns in Python (Refactoring-Guru) – my de facto reference for design patterns
- "What nobody tells you about documentation" (youtube.com) – talk that gives you a guidance and structure on how to create a documentation based on the Documentation system at divio.com
- OWASP Top 10
- OAuth 2.0 Authorization Framework
- Git Cheatsheet
There are also some more resources and tools on my GitHub stars page, which I use also as a watch list.