关注 工 仲 好:IT运维大本营,获取60G《网工系统大礼包》+获取更多思科+华为技术精讲视频
01、测试环境搭建
在本次测试中,测试环境的搭建工作乃是基于 ENSP(Enterprise Network Simulation Platform)来完成的。
要知道,ENSP 可是企业网络模拟平台中的得力工具,它能够为我们提供较为精准和有效的模拟环境。而此次所采用的测试设备是 CE12800,这是一款性能相当出色的设备,在同类型产品中具有诸多优势。
具体拓扑结构如下:

●CE1的G1/0/0接口配置IP地址为10.255.255.11。
●CE2的G1/0/0接口配置IP地址为10.255.255.12。
02 SSH 功能配置
为了切实确保 CE1 和 CE2 能够顺利地通过 SSH 这种安全可靠的方式来进行远程管理,这是一项至关重要的工作,需要我们在相关设备上严谨、准确地执行以下精心编写的配置脚本。
aaa
undo local-user policy security-enhance
local-user spoto password irreversible-cipher Huawei@123
local-user spoto service-type ssh
local-user spoto level 3
#
stelnet server enable
sftp server enable
ssh user spoto
ssh user spoto authentication-type password
ssh user spoto service-type stelnet sftp
ssh user spoto sftp-directory cfcard:
ssh server-source -i GE1/0/0
#
user-interface vty 0 4
authentication-mode aaa
protocol inbound ssh03 准备巡检 IP 文件
为了能够有条不紊地开展设备巡检工作,我们首先要创建一个专门的文件,将其命名为“ip.txt”。这个文件有着至关重要的作用,它主要用于妥善存放那些等待巡检的设备的 IP 地址。
您要知道,确保这个文件与 Python 巡检脚本处于同一目录之下是非常关键的。这就好比把相关的重要资料都整理在同一个文件夹中,方便我们在需要的时候能够迅速、准确地找到并使用。
至于这个文件的内容格式,那也是有着明确的规定和要求的。比如说,每一行都应当清晰地罗列一个 IP 地址,不能有任何的混淆和错误。而且,格式要保持统一和规范,这样 Python 巡检脚本在读取和处理这些 IP 地址时,才能够高效、准确地完成任务。
格式如下:
10.255.255.11
10.255.255.12
04 巡检脚本使用
为了高效、准确地对设备进行巡检,我们将采用提供的 Python 脚本。您可别小看了这个脚本,它可是我们完成巡检任务的得力助手。
它能够通过 SSH 这种安全稳定的连接方式,顺利地与设备建立连接。
在成功连接到设备之后,脚本会按照预先设定好的一系列巡检命令,有条不紊地开展工作。
完成巡检操作后,脚本还会将获取到的结果精心整理,并生成一份详尽的分析报告。
下面就是具体的脚本内容:
import paramiko
import os
import time
from datetime import datetime
from 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://" # 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://')
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()脚本执行过程如下:

05 查看报告
当成功运行脚本之后,神奇的事情就会发生,系统会自动为我们生成一份极其重要且具有特定格式的分析报告文件。
这份文件的名字有着清晰的时间标识,被命名为“Analysis_Report_YYYYMMDD_HHMMSS.txt”,这样的命名方式能够让我们一眼就清楚报告生成的具体时间,方便我们进行查阅和管理。
在这份报告当中,内容可谓是丰富而详尽。它不仅包含了设备全面的巡检结果,能够让我们清楚地了解设备各个方面的运行状况和可能存在的问题,而且还融入了由先进的 AI 技术生成的专业分析内容。

报告如下:



06 注意事项
务必确保设备的 SSH 功能已得到正确配置。这一点至关重要,因为只有这样,才能为后续的远程管理和巡检工作搭建起稳定且安全的桥梁。同时,还需要确认设备的 IP 地址与“ip.txt”文件中的内容完全一致。任何细微的偏差都可能导致操作无法顺利进行。
在您准备运行脚本之前,请务必仔细检查 Python 环境是否已经安装了必要的依赖库,比如“paramiko”和“openai”等。
如果在报告生成的过程中不幸遇到了问题,也请您不要慌张。首先,检查一下网络连接是否稳定正常。另外,还需要确认 API 密钥的有效性。
总之,对这些注意事项给予足够的重视和关注,能够大大提高操作的成功率和效率,让整个工作流程更加顺畅和可靠。
















