python 实现读取多个文件进行配置多个网络设备

python 实现读取多个文件进行配置多个网络设备,第1张

原理:

       将设备的配置文件,放到同目录下,然后将ip_add、username、passwd、path属性放入字典,写入device_info.py文件,并用datebase列表来接收字典。

        在脚本中导入device_info库,最外层嵌套一个循环用来遍历datebase列表,用来实现对不同文件的遍历读取,然后在ssh连接时需要属性时,调用datebase中元素的键,从而实现对不同文件的读取。

        代码不理解,可以去读上一篇文章,实际上就是将上篇文章中的固定变量,设置为灵活变量,以便调用不同文件

 

device_info.py:

# 需要一个数据库,存储着 各个设备的信息
dict_sw1 = {"ip_add": "192.168.19.10", "username": "zhangxiong", "passwd": "huawei@123", "path": "sw1.cfg"}
dict_sw2 = {"ip_add": "192.168.19.20", "username": "zhangxiong", "passwd": "huawei@123", "path": "sw2.cfg"}
dict_sw3 = {"ip_add": "192.168.100.30", "username": "zhangxiong", "passwd": "huawei@123", "path": "sw3.cfg"}
datebase = [dict_sw1, dict_sw2]

 python代码实现:

import paramiko
import time
from device_info import *


for item in range(len(datebase)):
    # 1.创建客户端对象
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    # 使用客户端,导入参数
    ssh.connect(hostname=datebase[item]["ip_add"], username=datebase[item]["username"], password=datebase[item]["passwd"])
    command = ssh.invoke_shell()  # 创建一个命令对象 ,调用shell

    with open(f'{datebase[item]["path"]}', 'r', encoding='utf-8') as f:
        while True:
            content = f.readline()  # 将读取到的文件,按行,存储为一个列表
            if not content:
                break
            command.send(content.encode())

    print("please wait ....")
    time.sleep(5)  # 发送完命令,需要一个延时,等待设备 将回显值回传,等待时间不能太短
    output = command.recv(65535)  # 接收服务器的返回数据
    print(output.decode())  # 将接收的数据解码

    ssh.close()

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/867750.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-12
下一篇2022-05-12

发表评论

登录后才能评论

评论列表(0条)

    保存