Python 网络自动化

网络行业告诉我们,我们需要学习 Python,我们需要进行网络编程,我们需要学习网络自动化,CLI 已死!但是对于我们大多数人来说什么都没有改变,我们在想有什么大惊小怪的?

事实是,使用Python 进行网络自动化是一项我们都必须很快掌握的基本技能,因此您不妨开始学习一些基础知识。

在 2020 年,您不必成为开发人员即可成为网络工程师,但学习一点 Python 肯定会有所帮助。

下面的示例是可用于执行一些非常简单的任务的短代码片段。

您只需要一个安装了 Python 的设备和一些要配置的测试路由器。

我将使用 EVE-NG 在 Ubuntu 18.04 上运行 4 个 Cisco CSR1000v 路由器和 Python,并使用 Visual Studio Code 编辑我的 Python 代码。

使用 Netmiko 连接到 Cisco 路由器

使用 Python 连接到 Cisco 设备的最简单方法是通过 telnet,但在大多数环境中,telnet 被禁用,因此虽然学习 telnet 库可能会很好,但我个人认为您最好直接进入 SSH 使其工作,然后有一些可以在生产中使用的东西。

Netmiko 基于 Paramiko SSH 库,它的工作有点棘手。编写 Netmiko 库的 Kirk Byers 使使用 Python 和 SSH 连接到网络设备变得更加容易。该库适用于各种网络设备,但对于下面的示例,我将使用 Cisco

https://pynet.twb-tech.com/blog/automation/netmiko.html

您可以观看视频或按照下面的代码示例进行操作。

 
 
 
# Use Netmiko to connect to Cisco using SSH and run simple commands

 from netmiko import ConnectHandler
 CSR = {
     'device_type': 'cisco_ios',
     'ip': '192.168.1.220',
     'username': 'roger',
     'password': 'cisco'
 }
 net_connect = ConnectHandler(**CSR)
 output = net_connect.send_command('show ip int brief')
 print (output)

只需将此代码保存为类似 connect.py 的内容

将IP地址更改为路由器的IP地址,并更改用户名和密码。

运行 Python 脚本,您应该会看到路由器上 ip 接口的输出。

使用 Netmiko 在 Cisco 路由器上配置接口

我们可以把上面的代码加上一些配置信息,这样你的 Python 脚本就可以真正配置路由器了。

将以下代码添加到 connect.py 脚本中,您将能够在路由器上配置环回接口

config_commands = ['interface loopback 2', 'ip address 2.2.2.2 255.255.255.0']
output = net_connect.send_config_set(config_commands)
print (output)

只需更改不同配置的接口名称和 IP 地址即可。

这只是 Python 功能的皮毛,但学习任何新技能的主要部分才刚刚开始!

使用 ipaddress 生成可用的 IP 地址

一个出色的 Python 内置模块是ipaddress

完整的 ipaddress 文档在这里
https://docs.python.org/3/library/ipaddress.html

使用此模块,您只需输入几行代码,就可以开始使用 Python 构建一个脚本,该脚本将为特定子网生成可用的 IP 地址。

我们举一个简单的例子。您已获得一个子网和一个掩码,并被要求从该范围内生成所有可用的 IP 地址。

子网是 192.0.2.0/28

您可以手动执行此操作,也可以使用子网计算器。或者您可以使用一个简单的 Python 脚本。使用 Python 的好处是,一旦您生成了第一个位,您就可以轻松地继续制作该脚本,然后使用已生成的地址配置设备。

这将不会在本文中介绍,但希望您将开始看到使用 Python 进行网络连接的力量。

# Script using ipaddress module to print out useable IP range 

import ipaddress 

net4 = ipaddress.ip_network('192.0.2.0/28')
for x in net4.hosts():
    print(x)

与上面的 Netmiko 示例一样,将代码保存为名为 printip.py 的文件(不要将文件保存为 ipaddress.py,因为它会导致模块出现问题)

运行代码,您应该会看到以下输出。

python用于网络示例代码

只需更改代码中的子网和/或掩码即可更改输出。

这个例子也为网络工程师提供了一个很好的 Python 面试问题——所以记住这个!

我希望你能看到网络编程是网络工程师需要学习的技能。

查看我的其他面向网络工程师的 Python 脚本

 

Python网络自动化脚本是使用Python编程语言编写的,用于自动化网络设备管理任务的程序。这些脚本利用Python的库和模块,如`paramiko`(用于SSH连接)、`netmiko`(用于简化网络设备的SSH连接)和`nornir`(用于并行执行任务和管理网络设备的配置和状态)等,实现了设备的登录、配置文件的上传下载、命令的执行以及配置的变更等功能。 网络自动化脚本通常具有以下几个特点: 1. **效率提升**:自动化脚本可以快速执行重复性的网络操作,从而节省工程师的时间。 2. **减少人为错误**:自动化执行标准操作减少了因手动操作而导致的错误。 3. **便于记录和审计**:脚本执行的每一步都可以记录下来,方便后期的审计和问题追踪。 编写Python网络自动化脚本的基本步骤通常包括: - 确定要自动化执行的网络任务。 - 使用Python网络库建立与网络设备的连接。 - 发送设备命令或配置文件,并处理设备的响应。 - 错误处理和结果验证。 以下是一个简单的网络自动化脚本示例,使用`netmiko`库连接到网络设备并执行命令: ```python from netmiko import ConnectHandler # 定义网络设备的参数 device = { 'device_type': 'cisco_ios', # 设备类型,如cisco_ios 'host': '192.168.1.1', # 设备的IP地址 'username': 'admin', # 登录用户名 'password': 'yourpassword', # 登录密码 'port': 22, # SSH端口,默认为22 } # 创建连接 net_connect = ConnectHandler(**device) # 执行命令 output = net_connect.send_command('show ip int brief') # 打印命令结果 print(output) # 关闭连接 net_connect.disconnect() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值