Python Network Programming Techniques: 50 real-world recipes to automate infrastructure networks and overcome networking challenges with Python

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Become well-versed with network programmability by solving the most commonly encountered problems using Python 3 and open-source packages Key Features • Explore different Python packages to automate your infrastructure • Leverage AWS APIs and the Python library Boto3 to administer your public cloud network efficiently • Get started with infrastructure automation by enhancing your network programming knowledge Book Description Network automation offers a powerful new way of changing your infrastructure network. Gone are the days of manually logging on to different devices to type the same configuration commands over and over again. With this book, you'll find out how you can automate your network infrastructure using Python. You'll get started on your network automation journey with a hands-on introduction to the network programming basics to complement your infrastructure knowledge. You'll learn how to tackle different aspects of network automation using Python programming and a variety of open source libraries. In the book, you'll learn everything from templating, testing, and deploying your configuration on a device-by-device basis to using high-level REST APIs to manage your cloud-based infrastructure. Finally, you'll see how to automate network security with Cisco's Firepower APIs. By the end of this Python network programming book, you'll have not only gained a holistic overview of the different methods to automate the configuration and maintenance of network devices, but also learned how to automate simple to complex networking tasks and overcome common network programming challenges. What you will learn • Programmatically connect to network devices using SSH (secure shell) to execute commands • Create complex configuration templates using Python • Manage multi-vendor or multi-device environments using network controller APIs or unified interfaces • Use model-driven programmability to retrieve and change device configurations • Discover how to automate post modification network infrastructure tests • Automate your network security using Python and Firepower APIs Who this book is for This book is for network engineers who want to make the most of Python to automate their infrastructure. A basic understanding of Python programming and common networking principles is necessary.

Author(s): Marcel Neidinger
Edition: 1
Publisher: Packt Publishing
Year: 2021

Language: English
Commentary: Vector PDF
Pages: 340
City: Birmingham, UK
Tags: Amazon Web Services; Python; Network Security; VLAN; Network Programming; SSH; Automation; Ansible; Testing; Jinja; Configuration as Code; Paramiko; Netmiko; NETCONF; NAPALM; Genie; pyATS; RESTCONF; Cisco Meraki; Firepower

Cover
Copyright
Contributors
Table of Contents
Preface
Chapter 1: A Primer on Python 3
Technical requirements
Assigning variables in Python
Getting ready
How to do it…
How it works…
Converting between data types in Python
Getting ready
How to do it…
How it works…
Looping over lists in Python
Getting ready
How to do it…
How it works…
There's more…
Controlling the flow of a Python program using if statements
Getting ready
How to do it…
How it works…
There's more…
Executing code until a condition is met using while loops
Getting ready
How to do it…
How it works…
There's more…
Writing reusable code with functions
Getting ready
How to do it…
How it works…
There's more…
Storing and accessing key-value pairs using dictionaries
Getting ready
How to do it…
How it works…
There's more…
Importing modules from the standard library
Getting ready
How to do it…
How it works…
There's more…
Installing modules from the PyPI
Getting ready
How to do it…
How it works…
Chapter 2: Connecting to Network Devices via SSH Using Paramiko
Technical requirements
Initiating an SSH session with Paramiko
Getting ready
How to do it...
How it works...
There's more...
Executing a command via SSH
Getting ready
How to do it...
How it works...
Reading the output of an executed command
Getting ready
How to do it...
How it works...
There's more...
Executing the same command against multiple devices
Getting ready
How to do it...
How it works...
Executing a sequence of commands
Getting ready
How to do it...
How it works...
Using public/private keys for authentication
Getting ready
How to do it...
How it works...
There's more...
Loading local SSH configuration
Getting ready
How to do it...
How it works...
Chapter 3: Building Configuration Templates Using Jinja2
Technical requirements
Loading Jinja2 templates in Python
Getting ready
How to do it...
How it works...
There's more...
Passing variables from Python to a template
Getting ready
How to do it...
How it works...
There's more...
Writing your rendered template to a file
Getting ready
How to do it
How it works...
Using for-loops in Jinja2 to configure an access list
Getting ready
How to do it...
How it works...
There's more...
Creating a port configuration template using if-clauses in Jinja2
Getting ready
How to do it...
How it works...
There's more...
Creating modular templates using Jinja2's import methods
Getting ready
How to do it...
How it works...
There's more...
Using Python functions from within your template with Jinja2 filters
Getting ready
How to do it...
How it works...
There's more...
Structuring your configuration template with blocks and template inheritance
Getting ready
How to do it...
How it works...
There's more...
Chapter 4: Configuring Network Devices Using Netmiko
Technical requirements
Connecting to a network device using netmiko
Getting ready
How to do it...
How it works...
There's more...
Sending commands using netmiko
Getting ready
How to do it...
How it works...
Retrieving command outputs as structured Python data using netmiko and Genie
Getting ready
How to do it...
How it works...
Gathering facts using netmiko
Getting ready
How to do it...
How it works...
There's more...
Connecting to multiple devices
Getting ready
How to do it...
How it works...
There's more...
Creating and applying a configuration template with Jinja2 and netmiko
Getting ready
How to do it...
How it works...
There's more...
Copying files to a device using netmiko
Getting ready
How to do it...
How it works...
There's more...
Escalating privileges with netmiko
Getting ready
How to do it...
How it works...
Authenticating using public-private keys with netmiko
Getting ready
How to do it...
How it works...
Handling commands that prompt for information using netmiko
Getting ready
How to do it...
How it works...
There's more...
Chapter 5: Model-Driven Programmability with NETCONF and ncclient
Technical requirements
Revisiting the NETCONF and YANG modules
Connecting to a network device using ncclient
Getting ready
How to do it…
How it works…
Using NETCONF and ncclient to retrieve the running configuration
Getting ready
How to do it…
How it works…
There's more…
Using NETCONF and ncclient to change the starting configuration
Getting ready
How to do it…
How it works…
Retrieving an interface configuration using NETCONF and ncclient
Getting ready
How to do it…
How it works…
Changing an interface configuration using NETCONF and ncclient
Getting ready
How to do it…
How it works…
Reacting to event notifications using NETCONF and ncclient
Getting ready
How to do it…
How it works…
Chapter 6: Automating Complex Multi-Vendor Networks with NAPALM
Technical requirements
Connecting to devices from different vendors using NAPALM
Getting ready
How to do it…
How it works…
There's more…
Issuing commands to a device using NAPALM
Getting ready
How to do it…
How it works…
Testing network reachability using ping and NAPALM
Getting ready
How to do it…
How it works…
Backing up your device configuration using NAPALM
Getting ready
How to do it…
How it works…
Gathering facts about your network device using NAPALM
Getting ready
How to do it…
How it works…
Creating and applying a configuration template with jinja2 and NAPALM
Getting ready
How to do it…
How it works…
Rolling back configuration changes using NAPALM
Getting ready
How to do it…
How it works…
Validating deployments using NAPALM
Getting ready
How to do it…
How it works…
Chapter 7: Automating Your Network Tests and Deployments with pyATS and Genie
Technical requirements
Revisiting the concept of testing
Creating a pyATS testbed file
Getting ready
How to do it…
How it works…
Connecting to your device and issuing commands using pyATS
Getting ready
How to do it…
How it works…
Retrieving your device's current state using pyATS
Getting ready
How to do it…
How it works…
Using Genie Conf objects to create a portable configuration script
Getting ready
How to do it…
How it works…
There's more…
Comparing your device's current state to a previously learned state
Getting ready
How to do it…
How it works…
Chapter 8: Configuring Devices Using RESTCONF and requests
Technical requirements
Revisiting HTTP's request-response model and RESTCONF principles
How does HTTP work?
How RESTCONF builds on top of HTTP
Making HTTP requests using the requests module in Python
Getting ready
How to do it…
How it works…
There's more…
Retrieving all interfaces of a device using RESTCONF and requests
Getting ready
How to do it…
How it works…
There's more…
Creating a VLAN using RESTCONF and requests
Getting ready
How to do it…
How it works…
Updating a VLAN using RESTCONF and requests
Getting ready
How to do it…
How it works…
There's more…
Deleting a VLAN using RESTCONF and requests
Getting ready
How to do it…
How it works…
Chapter 9: Consuming Controllers and High-Level Networking APIs with requests
Technical requirements
Authenticating web requests
Passing a username-password combination as authentication data in a request
Passing a token to a request using custom header fields
Storing authentication metadata between requests using sessions
Getting ready
How to do it…
How it works…
There's more…
Retrieving a list of Meraki networks
Getting ready
How to do it…
How it works…
There's more…
Retrieving usage details and connected clients for a Meraki network
Getting ready
How to do it…
How it works…
There's more…
Rebooting a Meraki device
Getting ready
How to do it…
How it works…
There's more…
Retrieving channel usage for your Meraki access point
Getting ready
How to do it…
How it works…
There's more…
Updating the switchport configuration of a Meraki device
Getting ready
How to do it…
How it works…
Deleting the QoS rules on a Meraki device
Getting ready
How to do it…
How it works…
There's more…
Using webhooks to programmatically react to an AP going down
Getting ready
How to do it…
How it works…
Chapter 10: Incorporating your Python Scripts into an Existing Workflow by Writing Custom Ansible Modules
Technical requirements
Setting up the module structure
Getting ready
How to do it…
How it works…
There's more…
Documenting your module
Getting ready
How to do it…
How it works…
Passing information into your module
Getting ready
How to do it…
How it works…
Using Ansible's built-in functionality to do web requests
Getting ready
How to do it…
How it works…
Packaging and calling your modules from Ansible playbooks
Getting ready
How to do it…
How it works…
There's more…
Chapter 11: Automating AWS Cloud Networking Infrastructure Using the AWS Python SDK
Technical requirements
Setting up the library to interact with your AWS account
Getting ready
How to do it…
How it works…
There's more…
Collecting information about your cloud networking resources
Getting ready
How to do it…
How it works…
Starting EC2 instances
Getting ready
How to do it…
How it works…
Creating a VPC
Getting ready
How to do it…
How it works…
There's more…
Subnetting your VPC
Getting ready
How to do it…
How it works…
Changing routes in your VPC
Getting ready
How to do it…
How it works…
Chapter 12: Automating your Network Security Using Python and the Firepower APIs
Technical requirements
Exploring the API Explorer
Authenticating against the FMC REST API
Getting ready
How to do it…
How it works…
There's more…
Retrieving access policies
Getting ready
How to do it…
How it works…
Changing access policies
Getting ready
How to do it…
How it works…
Retrieving access rules
Getting ready
How to do it…
How it works…
Changing access rules
Getting ready
How to do it…
How it works…
Deleting access rules
Getting ready
How to do it…
How it works…
Other Books You May Enjoy
Index