Python实现网络自动化案例,网工技能进阶必不可少!

 前言:

Python 可以用于编写自动化网络任务,例如自动化网络设备配置、网络监控、网络流量分析、远程执行等。例如,使用 pysnmp、netmiko、paramiko等库可以轻松地实现这些任务。通过Python可以得到设备输出的信息,进一步人为分析和处理。

今天小云君分享几个简单的自动化配置运维小实验:

  •  实验1:批量创建交换机loopback接口并配置IP地址

  •  实验2:批量创建VLAN,并加入成员端口

  •  实验3:批量查看设备版本,并输出保存至本地文件

【实验环境】

Python3版本

visual studio code代码编辑器

eNSP华为模拟器

【实验拓扑】

图片

完成基本的IP配置后,测试电脑虚拟接口能正常ping通所有交换机:

图片

【网络自动化】

实验1:批量创建交换机loopback接口

第一步:首先启用所有交换机的SSH功能‍

[Huawei]user-interface vty 0 4
[Huawei-ui-vty0-4]authentication-mode aaa
[Huawei-ui-vty0-4]protocol inbound ssh
[Huawei-aaa]local-user admin password cipher 12356
[Huawei-aaa]local-user admin privilege level 15
[Huawei-aaa]local-user admin service-type ssh
[Huawei]stelnet server enable
[Huawei]ssh authentication-type default password

第二步:编写python脚本,使用paramiko模块(是python基于SSH用于远程服务器并执行相应的操作,需要安装在python路径下)

import paramiko #加载paramiko模块,提供python中的SSH服务
import time

ips = ["192.168.56.200","192.168.56.201","192.168.56.202","192.168.56.203","192.168.56.204","192.168.56.205","192.168.56.206"]
username = 'admin'
password = '123456'

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #默认情况下,Paramiko会拒绝任何未知的SSH public keys,使用此函数使其接收来自交换机提供的public keys。

for ip in ips:
    ssh_client.connect(hostname=ip, username=username, password=password, look_for_keys=False) #ssh连接设备,密码错误则提示报错
    print('Successfully connect to ' + ip)

    commend = ssh_client.invoke_shell() #进入client命令窗口,输入ssh指令获取信息
    commend.send('sys\n')
    commend.send('interface LoopBack 0\n')
    commend.send('ip add 1.1.1.1 255.255.255.255\n')
    commend.send('return\n')
    commend.send('save\n')
    commend.send('y\n')

    time.sleep(2) #稍等2秒,确保保存生效后能执行以下操作
    commend.send('dis ip int brief LoopBack 0\n') #显示修改结果

    time.sleep(2) #稍等2秒读取窗口回显,然后执行以下操作
    output= commend.recv(65535) #截取本次运行script后的所有输出记录,将其assign给output变量
    print(output.decode("ascii")) #字符ascii表示,如果不做编译就会显示\n,输出结果没有换行
    
    ssh_client.close

第三步:运行脚本,查看结果

图片

OK,可以通过结果看到所有交换机的loopback    0接口已经创建,并配置了IP 1.1.1.1/24。大家也可以到eNSP里面挨个敲交换机的命令查看结果。

实验2:批量创建VLAN,并加入成员端口

第一步:首先启用所有交换机的SSH功能

第二步:编写python脚本,使用paramiko模块(是python基于SSH用于远程服务器并执行相应的操作,需要安装在python路径下)

import paramiko #加载paramiko模块,提供python中的SSH服务
import time

ips = ["192.168.56.200","192.168.56.201","192.168.56.202","192.168.56.203","192.168.56.204","192.168.56.205","192.168.56.206"]
username = 'admin'
password = '123456'

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #默认情况下,Paramiko会拒绝任何未知的SSH public keys,使用此函数使其接收来自交换机提供的public keys。

for ip in ips:
    ssh_client.connect(hostname=ip, username=username, password=password, look_for_keys=False) #ssh连接设备,密码错误则提示报错
    print('Successfully connect to ' + ip)

    commend = ssh_client.invoke_shell() #进入client命令窗口,输入ssh指令获取信息
    commend.send('sys\n')
    commend.send('vlan 10\n') #创建VLAN 10
    commend.send('port-group 1\n') #创建端口组1
    commend.send('group-member g0/0/21 g0/0/22\n') #将GigabitEthernet0/0/21和22扣加入该组
    commend.send('port link-type access\n')
    commend.send('port default vlan 10\n')
    commend.send('return\n')
    commend.send('save\n')
    commend.send('y\n')

    time.sleep(2) #稍等2秒,确保保存生效后能执行以下操作
    commend.send('dis vlan 10\n') #显示修改结果

    time.sleep(2) #稍等2秒读取窗口回显,然后执行以下操作
    output= commend.recv(65535) #截取本次运行script后的所有输出记录,将其assign给output变量
    print(output.decode("ascii")) #字符ascii表示,如果不做编译就会显示\n,输出结果没有换行
    
    ssh_client.close

第三步:运行脚本,查看结果

图片

可以看到Terminal输出所有交换机都配置了VLAN10,并且成员端口均为21和22口。

实验3:批量修改设备web登录密码

为保证安全性,定期批量修改设备的web登录密码,并输出修改记录保存至本地txt文件;

第一步:首先启用所有交换机的SSH功能

第二步:编写python脚本,使用paramiko模块(是python基于SSH用于远程服务器并执行相应的操作,需要安装在python路径下)

import paramiko #加载paramiko模块,提供python中的SSH服务
import time

ips = ["192.168.56.200","192.168.56.201","192.168.56.202","192.168.56.203","192.168.56.204","192.168.56.205","192.168.56.206"]
username = 'admin'
password = '123456'

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #默认情况下,Paramiko会拒绝任何未知的SSH public keys,使用此函数使其接收来自交换机提供的public keys。

for ip in ips:
    ssh_client.connect(hostname=ip, username=username, password=password, look_for_keys=False) #ssh连接设备,密码错误则提示报错
    print('Successfully connect to ' + ip)

    commend = ssh_client.invoke_shell() #进入client命令窗口,输入ssh指令获取信息
    commend.send('sys\n')
    commend.send('aaa\n') #进入aaa
    commend.send('local-user huawei password simple 20240116\n') #修改登录账号huawei的新密码为20240116
    commend.send('local-user huawei service-type http\n') #账号huawei登录类型为http
    commend.send('local-user huawei privilege level 3\n') #账号huawei权限等级为3
    commend.send('return\n')
    commend.send('save\n')
    commend.send('y\n')

    time.sleep(2) #稍等2秒,确保保存生效后能执行以下操作
    commend.send('dis local-user username huawei\n') #显示修改结果

    time.sleep(2) #稍等2秒读取窗口回显,然后执行以下操作
    output= commend.recv(65535) #截取本次运行script后的所有输出记录,将其assign给output变量
    print(output.decode("ascii")) #字符ascii表示,如果不做编译就会显示\n,输出结果没有换行
    
    ssh_client.close

file_path = "C:/Users/lty/Desktop/公众号/python实现网络自动化/mypassword.txt"  # 指定保存路径及文件名mypassword,注意是反斜杠格式
with open(file_path, 'wb') as file: #打开文件并写入内容,写入要用'wb'而不是'w',使用二进制写入模式(‘wb’)来开启待操作文件,不能像原来那样采用字符写入模式(‘w’)
    file.write(output)

print("已成功保存输出结果至", file_path)

第三步:运行脚本,查看结果

图片

结果显示所有交换机密码已被修改成功为20240116,明文形式保存。

第四步:查看终端输出结果保存的路径,存在生成的“mypassword.txt”文件:

图片

打开内容,可以看到已经保存了密码修改记录:

图片

扫描下方二维码关注微信公众号:小云君网络

图片

    原创不易,感谢大家支持!! 

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python 是一种开源的高级编程语言,在网络工程、运维和自动化脚本开发等领域有着广泛的应用。以下是一个 Python 网工运维自动化脚本的案例。 假设我们要完成一个自动化批量管理服务器的脚本。我们首先需要使用 Python 的 Paramiko 模块来建立与服务器的 SSH 连接,通过 SSH 协议进行远程管理。然后,我们可以编写一个函数,用于执行远程命令,例如重启服务器、查看系统信息等。 利用这个函数,我们可以编写一个批量执行命令的函数,它可以从一个配置文件中读取服务器的信息,然后依次连接到每个服务器,并执行相同的命令。这样就实现了批量管理服务器的功能。 另外,我们可以编写一个函数,来分析服务器的日志文件。我们可以使用 Python 的 re 模块来进行正则表达式的匹配,从日志文件中提取关键信息,例如错误日志、访问次数等。然后,我们可以进一步处理这些提取出来的信息,如生成报表、发送警报等。 此外,我们还可以使用 Python 的 requests 模块进行网络请求,例如发送 HTTP 请求来检查网站的可用性、获取网页内容等。我们可以编写一个自动化监控脚本,定期执行这些请求并分析返回的结果,如果发现异常就发送警报。 综上所述,Python 网工运维自动化脚本充分利用了 Python 强大的网络处理、文本处理和自动化编程能力,可以提高运维效率,减少重复工作,帮助管理员更好地管理和监控服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小云君网络

原创不易,感谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值