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

该博客介绍了一种通过Python实现SSH连接管理多个设备的方法。在device_info.py中,定义了不同设备的配置字典,包括IP地址、用户名、密码和路径,存储在datebase列表中。然后在脚本中,遍历datebase,利用paramiko库建立SSH连接,逐行发送配置文件内容到相应设备,实现批量操作。这种方法提高了设备配置管理的灵活性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理:

       将设备的配置文件,放到同目录下,然后将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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值