导入所需库

import paramiko from ncclient import manager import time from datetime import datetime

定义交换机IP和登录信息

switch_ip = "192.168.1.1" username = "admin" password = "password"

读取命令文件并执行

with open("commands.txt", "r") as f: commands = f.readlines() # 建立SSH连接 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(switch_ip, username=username, password=password) # 执行命令 for command in commands: _, stdout, _ = ssh.exec_command(command) print(stdout.read().decode())

建立NETCONF连接并打开NETCONF功能

with manager.connect(host=switch_ip, port=830, username=username, password=password, hostkey_verify=False) as m: # 配置设备日志主机为10.1.60.2 config = """ 10.1.60.2 """ m.edit_config(target='running', config=config)

监控设备状态并输出结果

while True: # 建立SSH连接 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(switch_ip, username=username, password=password) # 监控电源状态 _, stdout, _ = ssh.exec_command("show power inline") power_output = stdout.read().decode() if "faulty" in power_output: print("Power: faulty") else: print("Power: normal") # 监控风扇状态 _, stdout, _ = ssh.exec_command("show environment fan") fan_output = stdout.read().decode() if "faulty" in fan_output: print("Fan: faulty") else: print("Fan: normal") # 监控LACP状态 _, stdout, _ = ssh.exec_command("show lacp neighbor") lacp_output = stdout.read().decode() if "No neighbors" in lacp_output: print("LACP: No neighbors") else: print("LACP: normal") # 监控CPU利用率 _, stdout, _ = ssh.exec_command("show processes cpu sorted") cpu_output = stdout.read().decode() if "faulty" in cpu_output: print("CPU: faulty") else: print("CPU: normal") # 监控内存利用率 _, stdout, _ = ssh.exec_command("show processes memory sorted") memory_output = stdout.read().decode() if "faulty" in memory_output: print("Memory: faulty") else: print("Memory: normal") # 监控OSPF邻居状态 _, stdout, _ = ssh.exec_command("show ip ospf neighbor") ospf_output = stdout.read().decode() if "FULL/DR" in ospf_output: print("OSPF: normal") else: print("OSPF: faulty") # 关闭SSH连接 ssh.close() # 等待5分钟 time.sleep(300)

# 每24h保存一次配置文件并传输到电脑本地
now = datetime.now()
if now.hour == 0 and now.minute == 0:
    # 建立SFTP连接
    transport = paramiko.Transport((switch_ip, 22))
    transport.connect(username=username, password=password)
    sftp = paramiko.SFTPClient.from_transport(transport)
    # 保存配置文件到交换机本地
    config_filename = f"config_{now.strftime('%Y%m%d')}.txt"
    _, stdout, _ = ssh.exec_command(f"show running-config > {config_filename}")
    # 传输配置文件到电脑本地
    sftp.get(config_filename, config_filename)
    # 关闭SFTP连接
    sftp.close()
    transport.close(

原文地址: https://www.cveoy.top/t/topic/e8VO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录