导入所需库

import paramiko from ncclient import manager import time import datetime

定义交换机 IP 地址和登录信息

switch_ip = '192.168.1.1' switch_username = 'admin' switch_password = 'password'

定义命令文件路径

command_file = 'commands.txt'

建立安全连接

ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(switch_ip, username=switch_username, password=switch_password)

打开命令文件并执行命令

with open(command_file) as f: commands = f.read().splitlines()

for command in commands: stdin, stdout, stderr = ssh.exec_command(command) print(stdout.read().decode())

关闭 SSH 连接

ssh.close()

定义获取关键状态的函数

def get_status(): with manager.connect(host=switch_ip, username=switch_username, password=switch_password, timeout=10, device_params={'name': 'huawei'}) as m: # 获取电源状态 power_status = m.get(('xpath', '/state/sys/power/state')).data_xml # 获取风扇状态 fan_status = m.get(('xpath', '/state/sys/fan')).data_xml if 'faulty' in fan_status: print('Fan status: faulty') # 获取 LACP 状态 lacp_status = m.get(('xpath', '/state/link-aggregation/lacp')).data_xml # 获取 CPU 利用率 cpu_status = m.get(('xpath', '/state/cpu-usage')).data_xml # 获取内存利用率 memory_status = m.get(('xpath', '/state/memory-usage')).data_xml # 获取 OSPF 邻居状态 ospf_status = m.get(('xpath', '/state/routing/ospf/neighbor')).data_xml # 输出状态 print('Power status:', power_status) print('Fan status:', fan_status) print('LACP status:', lacp_status) print('CPU usage:', cpu_status) print('Memory usage:', memory_status) print('OSPF neighbor status:', ospf_status)

每 5 分钟监控一次关键状态

while True: print('Monitoring status at', datetime.datetime.now()) get_status() time.sleep(300)

每 24h 保存一次配置文件并备份到本地

if datetime.datetime.now().hour == 0: # 创建 SFTP 连接 transport = paramiko.Transport((switch_ip, 22)) transport.connect(username=switch_username, password=switch_password) sftp = paramiko.SFTPClient.from_transport(transport) # 下载配置文件 sftp.get('/cfg/startup.cfg', 'startup.cfg') # 上传备份 sftp.put('startup.cfg', 'startup_backup.cfg') # 关闭 SFTP 连接 sftp.close() transport.close()

配置设备日志主机为 10.1.60.2

with manager.connect(host=switch_ip, username=switch_username, password=switch_password, timeout=10, device_params={'name': 'huawei'}) as m: config = """ 10.1.60.2 """ m.edit_config(target='running', config=config

使用 Python 脚本监控华为交换机关键运行状态

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

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