1 minute read

Why Python is the Most Popular Choice for Network Automation?

Python has become a go-to language for network automation, and for good reason. Its simple syntax, flexibility, scalability, wide range of libraries, and active community make it a great choice for automating a variety of network tasks.

It also has an extensive library of existing modules and functions that can be used to quickly create scripts that can automate network tasks. Additionally, Python’s syntax is simple and easy to learn, making it an ideal language for IT professionals just getting started with network automation.

Netmiko

One of the most popular libraries for network automation in Python is Netmiko. Netmiko is a multi-vendor library that simplifies the process of connecting to and interacting with network devices via SSH.

It supports a wide range of vendors, including Cisco, Juniper, and Arista.

Here is an example of how you can use Netmiko to connect to a Cisco device and retrieve its running configuration:

from netmiko import ConnectHandler

# Define device connection parameters
device = {
    'device_type': 'cisco_ios',
    'host': '192.168.1.1',
    'username': 'admin',
    'password': 'password',
}

# Connect to the device
net_connect = ConnectHandler(**device)

# Send the 'show run' command and print the output
output = net_connect.send_command('show ip int brief')
print(output)

# Close the connection
net_connect.disconnect()

NAPALM

Another useful library for network automation is NAPALM. NAPALM is a vendor-neutral library that provides a unified API for interacting with network devices.

It supports a wide range of vendors and protocols, including Cisco, Juniper, Arista, and even BGP.

Here’s an example of how you can use NAPALM to retrieve the BGP neighbors of a Juniper device:

from napalm import get_network_driver

# Define device connection parameters
device = {
    'hostname': '192.168.1.1',
    'username': 'admin',
    'password': 'password',
    'optional_args': {'port': 1234},
}

# Connect to the device using the Junos driver
driver = get_network_driver('junos')
junos = driver(**device)
junos.open()

# Retrieve the BGP neighbors and print the output
bgp_neighbors = junos.get_bgp_neighbors()
print(bgp_neighbors)

# Close the connection
junos.close()

These are just a few examples of how you can use Python for network automation. With its wide range of libraries and active community, Python makes it easy to automate a variety of network tasks, from device configuration to network monitoring.