前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小白想要利用python脚本批量登录网络设备修改配置,看这篇就够了!

小白想要利用python脚本批量登录网络设备修改配置,看这篇就够了!

作者头像
网络工程师笔记
发布2022-10-31 11:46:13
1.6K0
发布2022-10-31 11:46:13
举报

之前分享过利用python脚本登录一台交换机,

有同学说希望出个批量的。

今天,它来了!

看好喔!好好学!

说不定,老板就给你加鸡腿了!

一、实验环境搭建

1、按照下图,在ensp模拟器上搭建环境,为了演示批量修改设备,龙哥这里实验4台路由器,当然了,如果你电脑性能足够牛逼,你也可以多用几台路由器咯!然后标注好IP地址。

2、物理电脑(即我台式电脑)与ensp做好桥接:

3、给每台路由器做好初始化配置,即配置修改设备默认名称、配置管理IP地址、配置SSH及登录用户名和密码。

以R2为例(小白,其他设备参考R2配置),修改设备名、配置IP地址:

[Huawei]SYS R2

[R2]

[R2]int g0/0/0

[R2-GigabitEthernet0/0/0]ip add 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.

Confirm to replace them? (y/n)[n]:y

The range of public key size is (512 ~ 2048).

NOTES: If the key modulus is greater than 512,

It will take a few minutes.

Input the bits in the modulus[default = 512]:2048

Generating keys...

.......+++

..............+++

.....++++++++

...............++++++++

[R2]user-interface vty 0 4

[R2-ui-vty0-4]authentication-mode aaa

[R2-ui-vty0-4]protocol inbound ssh

[R2]aaa

[R2-aaa]local-user along password cipher along123

[R2-aaa]local-user along privilege level 15

[R2-aaa]local-user along service-type ssh

[R2-aaa]ssh user along authentication-type password

[R2]

[R2]stelnet server enable

[R2]

上述配置完,建议用secureCRT先登录一下各个设备,验证网络连通性、ssh连通性是否ok?

这里以R1为例,验证一下。测试时,你们可以每台都验证一下。

这样验证的好处,假如待会我们写的python脚本如果有问题,那跟网络、ssh配置就没关了,便于后续排错就对啦!

二、准备好批量IP清单

1、这里我先创建4台路由器管理ip的清单,用txt创建:

2、注意!注意!注意!这个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.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(hostname=ip,username=user,password=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("net 192.168.56.0 0.0.0.255\n")

command.send("quit\n")

time.sleep(2)

output = command.recv(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脚本也行

然后在弹出的窗口输入用户名和密码即可:

然后观察运行情况:

可知,python脚本执行成功了,我们也可以再通过ensp登录路由器看看检查配置,确认是否生效了?

上述这些截图中,我们可以知道,确实生效了。

---END---

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 网络工程师笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档