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

class HuaweiSwitch: def init(self, ip, username, password): self.ip = ip self.username = username self.password = password

def _get_connect(self):
    ssh_con = paramiko.SSHClient()
    ssh_con.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_con.connect(self.ip, username=self.username, password=self.password)
    self.cli = ssh_con.invoke_shell()
    self.cli.recv(65535)
    return ssh_con

def netconf(self):
    ssh_con = self._get_connect()
    self.cli.send('sys im\n')
    self.cli.send('netconf\n')
    self.cli.send('protocol inbound ssh port 830\n')
    sleep(1)
    dis_this = self.cli.recv(65535).decode()
    print(dis_this)
    ssh_con.close()
    print('---使能Netconf成功---')

class Device(): def init(self, ip, usr, pwd): self.hostname = ip self.username = usr self.password = pwd self.client = self._get_connect() self.cli = self.client.invoke_shell() self.cli.send('n\n') self.cli.send('screen-length 0 temporary\n')

def _get_connect(self):
    ssh_con = paramiko.SSHClient()
    ssh_con.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh_con.connect(hostname=self.hostname, username=self.username, password=self.password, timeout=10)
    return ssh_con

def check_fan_status(self, output):
    lines = output.split('\n')
    fan_status = {}
    for line in lines:
        if 'Fan' in line:
            fan_name = line.split(':')[0]
            fan_state = line.split(':')[1].strip()
            if 'Normal' not in fan_state:
                fan_status[fan_name] = fan_state
    if not fan_status:
        print('All fans are working normally!')
    else:
        print('Fan status:')
        for fan_name, fan_state in fan_status.items():
            print(f'{fan_name}: {fan_state}')

def open(self):
    with open('command.txt', 'r') as f:
        cmd_list = f.readlines()
        for cmd in cmd_list:
            self.cli.send(cmd)
    time.sleep(1)
    COMMAND = self.cli.recv(65535).decode('utf-8')

    print(COMMAND)

    self.check_fan_status(COMMAND)

    timestamp = datetime.datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
    filename = f'{self.hostname}_{timestamp}.txt'
    with open(filename, 'w') as f:
        f.write(COMMAND)

def close(self):
    self.client.close()

if name == 'main': DEVICE_IP = '10.1.0.6' USERNAME = 'python' PASSWORD = 'Huawei@123' device = Device(DEVICE_IP, USERNAME, PASSWORD) huawei_switch = HuaweiSwitch(DEVICE_IP, USERNAME, PASSWORD) huawei_switch.netconf() device.open() device.close(

华为交换机使用python合并下面的命令import paramikofrom time import sleepclass HuaweiSwitch def __init__self ip username password selfip = ip selfusername = username selfpassword = password

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

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