利用Python脚本批量登录交换机教程:轻松掌握网络设备管理技巧
听说99%的网工都来这里充电

之前分享过利用python脚本登录一台交换机,
有同学说希望出个批量的。今天,它来了!
看好喔!好好学!
说不定,老板就给你加鸡腿了!
一、实验环境搭建
按照下图,在 ensp 模拟器上搭建环境。为演示批量修改设备,龙哥在此实验 4 台路由器。若你电脑性能足够好,也可多用几台路由器。之后标注好 IP 地址。
2、物理电脑(即我台式电脑)与ensp做好桥接:
给每台路由器进行初始化配置,首先要配置修改设备的默认名称;接着要配置管理 IP 地址;然后要配置 SSH 以及登录的用户名和密码。
以 R2 为例,对于小白以及其他设备,可参考 R2 的配置。修改设备名,同时配置 IP 地址。
[Huawei]SYS R2
[R2]
[R2]int g0/0/0
在 R2 的 GigabitEthernet0/0/0 接口上进行配置,设置 IP 地址为 192.168.56.20 ,子网掩码为 24 。
[R2-GigabitEthernet0/0/0]
[R2-GigabitEthernet0/0/0]qu
[R2]
以R2为例,配置SSH,其他设备参考如下即可:
[R2]rsa local-key-pair create
The key name will be: Host
% RSA keys defined for Host already exist.
如果密钥模数大于 512 。
需要花费几分钟的时间。
Input the bits inthe modulus 的默认值为 512,而这里是 2048。
Generating keys...
.......+++
..............+++
.....++++++++
...............++++++++
[R2]user-interface vty 0 4
[R2-ui-vty0-4]使用的认证模式为 aaa。
[R2-ui-vty0-4] 支持 inbound 的 ssh 协议。
[R2]aaa
[R2-aaa]local密码 cipher 伴随着 along123 一起出现,同时还有 along 这个密码。
[R2-aaa]local沿着特权级别 15 前行。
[R2-aaa]local-user along service-type ssh
[R2]
[R2]stelnet server enable
[R2]
上述配置完成后,建议首先使用 secureCRT 登录各个设备,以验证网络连通性是否正常,同时验证 ssh 连通性是否良好。
这里以R1为例,验证一下。测试时,你们可以每台都验证一下。
这样验证有好处。如果待会我们写的 python 脚本有问题,那么就与网络和 ssh 配置无关了,这样便于后续进行排错。
二、准备好批量IP清单
1、这里我先创建4台路由器管理ip的清单,用txt创建:
注意!这个 ip 清单需放置于与你即将创建的 python 脚本相同的目录中。例如,我即将创建一个名为 router-lab.py 的 python 脚本。
三、编写python脚本
import paramiko
import time
from getpass import getpass
user = input('Username:')
pw = getpass('password:')
f = open("ip-list.txt","r")
for line in f.readlines():
ip = line.strip()
ssh 被设定为 paramiko.SSHClient() 这个对象。
ssh 设定缺失主机密钥策略为 paramiko.AutoAddPolicy() 。
使用 ssh 进行连接,连接的主机名为 ip,用户名是 user,密码是 pw。
print("恭喜您成功登录ensp的路由器!", ip)
command = ssh.invoke_shell()
command.send("system\n")
command.send("vlan 20\n")
command.send("quit\n")
command.send("ospf\n")
command.send("area 0\n")
command.send(网络地址为 192.168.56.0 ,子网掩码为 0.0.0.255 。)
command.send("quit\n")
time.sleep(2)
output 接收到来自 command 的数据,数据大小为 65535 。
print(output.decode("ascii"))
ssh.close()
注意:python写for循环时,一定要注意缩进格式。
代码解释:
f = open("ip-list.txt","r")
定义一个文件对象为 f,用 r 表示,以只读的形式打开 ip-list.txt 文件,此文件就是刚刚我们创建的 ip 清单,也就是你要批量管理的 ip 地址。
for line in f.readlines():
ip = line.strip()
利用 for 循环语句,f.readlines 能够逐行读取 f 文件对象,然后将读取到的内容赋给 line。
我理解 line.strip()的作用是移除空格或换行符,接着将其复制给 ip。
其他代码这里不再解释,可以参考往期的:
四、执行脚本与验证
1、执行前的确认
从上述代码能得知,我们的目标是批量为设备创建 vlan20 ,同时创建 ospf 协议,并将管理网段宣告到 area 0 中。
所以,在还未执行之前,我们能够登录设备进行查看。经查看,确实不存在 vlan 20 以及与 ospf 相关的配置。
2、接下来,我们开始执行代码:
用编辑器执行也可以或双击python脚本也行
然后在弹出的窗口输入用户名和密码即可:
然后观察运行情况:
可知,我们可以通过登录路由器来查看配置,确认其是否生效。具体来说,我们可以再次通过登录路由器来进行检查。
上述这些截图中,我们可以知道,确实生效了。
怎么样?你学“废”了吗?不要再说 网工很忙,没时间泡妞啦!