LS-NET-005-DeepSeek自动生成巡检报告
01 测试环境搭建本次测试环境基于ENSP(Enterprise Network Simulation Platform)构建,测试设备为CE12800。
具体拓扑结构如下:

CE1的G1/0/0接口配置IP地址为10.255.255.11。CE2的G1/0/0接口配置IP地址为10.255.255.12。为确保CE1和CE2能够通过SSH进行远程管理,需在设备上执行以下配置脚本:
代码语言:javascript代码运行次数:0运行复制aaaundo local-user policy security-enhancelocal-user spoto password irreversible-cipher Huawei@123local-user spoto service-type sshlocal-user spoto level 3#stelnet server enablesftp server enablessh user spotossh user spoto authentication-type passwordssh user spoto service-type stelnet sftpssh user spoto sftp-directory cfcard:ssh server-source -i GE1/0/0#user-interface vty 0 4authentication-mode aaaprotocol inbound ssh登录后复制
创建一个名为ip.txt的文件,用于存放待巡检设备的IP地址。
该文件需与Python巡检脚本位于同一目录下。
文件内容格式如下:
代码语言:javascript代码运行次数:0运行复制10.255.255.1110.255.255.12登录后复制

使用提供的Python脚本进行设备巡检。脚本通过SSH连接到设备,执行预定义的巡检命令,并将结果生成分析报告。
具体脚本如下:
代码语言:javascript代码运行次数:0运行复制import paramikoimport osimport timefrom datetime import datetimefrom openai import OpenAI # 使用 OpenAI 的客户端库# ******************** 配置区域 ********************SSH_PORT = 22 # SSH端口号SSH_USER = "spoto" # 固定SSH用户名SSH_PASS = "Huawei@123" # 固定SSH密码DEEPSEEK_API_KEY = "************" # 替换为你的 DeepSeek API 密钥DEEPSEEK_API_URL = "https://api.deepseek.com" # DeepSeek API 地址COMMAND_DELAY = 2 # 命令间隔时间(秒)TIMEOUT = 20 # SSH连接超时时间(秒)# *************************************************# 巡检命令列表(可根据需要修改)INSPECTION_COMMANDS = [ 'display logbuffer' # 查看日志缓冲区]def get_timestamp(): """获取标准时间格式""" return datetime.now().strftime("%Y-%m-%d %H:%M:%S")def collect_device_info(ip): """通过SSH收集设备信息 :param ip: 设备IP地址 :return: 采集结果字符串 """ client = paramiko.SSHClient() client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: # 建立SSH连接 print(f"[{get_timestamp()}] 正在连接 {ip}...") client.connect(ip, SSH_PORT, SSH_USER, SSH_PASS, timeout=TIMEOUT) output = f"\n=== {ip} 巡检结果 ===\n" # 执行巡检命令 for idx, cmd in enumerate(INSPECTION_COMMANDS): try: print(f"[{get_timestamp()}] 执行命令: {cmd}") stdin, stdout, stderr = client.exec_command(cmd) result = stdout.read().decode('utf-8', errors='ignore').strip() output += f"[{cmd}]\n{result}\n\n" # 非最后一个命令添加延时 if idx < len(INSPECTION_COMMANDS) - 1: print(f"[{get_timestamp()}] 等待 {COMMAND_DELAY} 秒...") time.sleep(COMMAND_DELAY) except Exception as cmd_error: output += f"命令执行失败: {str(cmd_error)}\n" return output except Exception as conn_error: return f"\n=== {ip} 连接失败 ===\n错误信息: {str(conn_error)}\n" finally: client.close()def generate_ai_report(content): """使用 DeepSeek API 生成分析报告 :param content: 待分析内容 :return: 分析结果字符串 """ client = OpenAI(api_key='sk-90786556fa8046b28042bf5b2c0276d7', base_url='https://api.deepseek.com') try: print(f"[{get_timestamp()}] 正在生成分析报告...") response = client.chat.completions.create( model="deepseek-chat", messages=[ {"role": "system", "content": "你是一个专业的网络设备分析专家,能够根据设备巡检日志生成分析报告"}, {"role": "user", "content": f"请根据以下设备巡检日志生成分析报告:\n{content}"} ], stream=False ) return response.choices[0].message.content.strip() except Exception as e: return f"DeepSeek API 调用异常:{str(e)}"def main(): # 生成带时间戳的报告文件名 report_file = f"Analysis_Report_{datetime.now().strftime('%Y%m%d_%H%M%S')}.txt" try: # 读取IP列表 with open('ip.txt', 'r') as f: ips = [line.strip() for line in f if line.strip()] if not ips: print(f"[{get_timestamp()}] 错误:ip.txt中没有找到有效IP地址") return # 采集设备信息 full_report = "" for ip in ips: print(f"\n[{get_timestamp()}] 开始巡检 {ip}") full_report += collect_device_info(ip) # 写入临时文件 with open('temp.txt', 'w') as f: f.write(full_report) # 生成分析报告 with open('temp.txt', 'r') as f: ai_report = generate_ai_report(f.read()) # 保存最终报告 with open(report_file, 'w') as f: f.write(f"=== 设备巡检分析报告 ===\n") f.write(f"生成时间: {get_timestamp()}\n") f.write(f"巡检设备: {len(ips)}台\n\n") f.write(ai_report) print(f"\n[{get_timestamp()}] 报告生成成功: {report_file}") except FileNotFoundError: print(f"[{get_timestamp()}] 错误:未找到ip.txt文件") except Exception as e: print(f"[{get_timestamp()}] 发生未预期错误: {str(e)}") finally: # 清理临时文件 time.sleep(10) if os.path.exists('temp.txt'): os.remove('temp.txt') print(f"[{get_timestamp()}] 已清理临时文件")if __name__ == "__main__": main()登录后复制
脚本执行过程如下:

运行脚本后,系统将自动生成一份带时间戳的分析报告文件,文件名为Analysis_Report_YYYYMMDD_HHMMSS.txt。
报告中包含设备的巡检结果以及由AI生成的分析内容。报告文件将保存在脚本所在目录下。
以上就是LS-NET-005-DeepSeek自动生成巡检报告的详细内容,更多请关注楠楠科技社其它相关文章!