注释如下:

from ncclient import manager # 导入ncclient模块,用于管理网络设备
import paramiko # 导入paramiko模块,用于SSH连接
import time # 导入time模块,用于等待命令执行完成
import datetime # 导入datetime模块,用于获取当前时间

# 定义设备IP地址、用户名和密码
DEVICE_IP = '10.1.0.6'
USERNAME = 'python'
PASSWORD = 'Huawei@123'

class Device():
    def __init__(self, ip, usr, pwd):
        self.hostname = ip # 设备IP地址
        self.username = usr # 设备用户名
        self.password = pwd # 设备密码
        self.client = self._get_connect() # 建立SSH连接
        self.cli = self.client.invoke_shell() # 打开CLI界面
        self.cli.send('n\n') # 发送命令,确认是否关闭分页显示
        self.cli.send('screen-length 0 temporary\n') # 发送命令,设置CLI界面显示全部内容

    def _get_connect(self):
        ssh_con = paramiko.SSHClient() # 创建SSHClient对象
        ssh_con.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 自动添加缺失的主机密钥
        ssh_con.connect(hostname=self.hostname, username=self.username, password=self.password,timeout=10) # 建立SSH连接
        return ssh_con # 返回SSH连接对象

    def check_fan_status(self, output):
        lines = output.split('\n') # 将输出按行分割
        fan_status = {} # 存储风扇状态的字典
        for line in lines:
            if 'Fan' in line: # 如果行中包含'Fan'字符串
                fan_name = line.split(':')[0] # 获取风扇名称
                fan_state = line.split(':')[1].strip() # 获取风扇状态,并去除空格
                if 'Normal' not in fan_state: # 如果风扇状态不是'Normal'
                    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'{DEVICE_IP}_{timestamp}.txt' # 文件名格式为'设备IP_时间戳.txt'
        with open(filename, 'w') as f: # 打开文件
            f.write(COMMAND) # 将输出写入文件

    def close(self):
        self.client.close() # 关闭SSH连接

if __name__ == '__main__':
    device = Device(DEVICE_IP, USERNAME, PASSWORD) # 创建Device对象
    device.open() # 打开CLI界面并执行命令
    device.close() # 关闭SSH连接
``
对以下代码合并优化加注释pythondef check_fan_statusself output lines = outputsplitn fan_status = for line in lines if Fan in line fan_name = linesplit0 fan_state = linesplit1

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

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