网络工程师的python之路-基于netmiko模块的分组处理

背景介绍

sys.argv

前面的几个实验是基于一批设备的类型、型号、版本等都一致的情况下进行的。但是,实际现网运维中,数通设备产品线广阔,同样的产品还有众多型号,即便同型号的设备还有不同的软件版本。这些差异造成相应的指令集可能有微小差别,甚至天差地别。本实验通过设备分组模拟现网批次设备间的差异,配合 sys.argv ,让不同组调用不同的预设脚本。

sys.argv举个例子:C:\Users\86157\Desktop>py lab3.py ip_list.txt cmd_list.txt

这时argv = ['lab3.py', 'ip_list.txt', 'cmd_list.txt'] 我们代码里的: sys.argv[0]等同于lab3.py; sys.argv[1],此时也就等同于ip_list.txt; sys.argv[2], 此时也就等同于cmd_list.txt。

input()函数和getpass模块

在针对Telnetlib、Netmiko模块的基础知识讲解中,我们都将SSH登录的用户名和密码明文写在了脚本里,这种做法在实验练习中可以使用,但是在生产环境中是不够安全的。在生产环境中,正确的做法是使用input()函数和getpass模块来分别提示用户手动输入SSH用户名和密码。

getpass是Python的内建模块,无须通过pip下载安装即可使用。它和input()函数一样,都是Python的交互式功能,用来提示用户输入密码,区别是如果用input()输入密码,用户输入的密码是明文可见的,如果你身边坐了其他人,密码就这么暴露了。而通过getpass输入的密码则是隐藏不可见的,安全性很高,所以强烈建议使用getpass来输入密码,使用input()来输入用户名。

实验拓扑

将ensp的LSW1与本地虚拟网卡loopback0进行桥接,模拟将自己的电脑桥接到以下拓扑网络中。

实验目的

LSW3、LSW5的stp模式改为stp。LSW2、LSW4的stp模式改为RSTP。

实验准备

分别创建两个文本,分别存放LSW3+LSW5和LSW2+LSW4的管理ip。在创建两个文本分别存放配置为STP和RSTP的命令。

注意在配置文件里写配置时,不要写sys和return,因为 send_config_from_file本身就带有这两条命令,也不可直接用save保存,否则会报错。

创建脚本,我这里是lab8.py。

实验脚本

from netmiko import ConnectHandler
import getpass
import sys
username=input('Username:')
password=getpass.getpass('Password:')
ip_file=sys.argv[1]
cmd_file=sys.argv[2]
iplist=open(ip_file,'r')
for line in iplist.readlines():
    ip=line.strip()
    SW={
            'device_type':'huawei',
            'ip':ip,
            'username':username,
            'password':password,
            
            }
    connect=ConnectHandler(**SW)
    print('\n-----------------已成功登录交换机'+ip+'------------------\n')
    output=connect.send_config_from_file(cmd_file)
    print(output)
    result=connect.send_command('dis stp | include CIST Global Info')#查看配置结果
    print(result)
    connect.save_config()

iplist=open(ip_file,'r')由于ip_file是文件对象,不是具体的文件名,所以不用加单引号。

实验结果

在cmd分别执行:

py lab8.py G1_ip.txt G1_cmd.txt

py lab8.py G2_ip.txt G2_cmd.txt

lab8.py、G1_ip.txt、 G1_cmd.txt、 G2_ip.txt、 G2_cmd.txt要在同一个文件夹里

如果现网有华为、思科的设备,而他们的配置命令有所不同,就可以创建两个命令组,分别存放各自的命令, 就是分组处理。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值