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 (which really just works :D)
  • Wireguard – simple VPN solution compared to IPsec
  • Netbird.io – interesting alternative to Tailscale

Other Interesting Site/Talks/Articles

There are also some more resources and tools on my GitHub stars page which I use as a watchlist.