Day 18:自动备份和恢复自定义UI —— 构建Dashboard自动恢复脚本


🚀 Day 18:自动备份和恢复自定义UI ------ 构建Dashboard自动恢复脚本

今日目标:今天我们要构建一个自动备份和恢复自定义 UI 界面的脚本。通过这个脚本,我们可以快速、安全地将容易被 AOB 覆盖的 XML 文件恢复到原始状态,同时避免手动操作的错误和风险。


💻 第一部分:编写一键备份脚本 (backup_ui.sh)

我们需要将之前编写的自定义 UI 使用的 XML 文件从容易被 AOB 覆盖或修改的 default 目录中"抢救"出来,存放到一个 AOB 永远触碰不到的安全地带(比如 ~/peak_ui_backup)。

请在你的 WSL 或 Linux 终端中,回到你的用户主目录,并创建备份脚本:

bash 复制代码
cd ~
vi backup_ui.sh

进入 vi 后,先按 Esc 键,输入 :set paste 并回车开启防干扰粘贴模式,然后再按 i 键进入插入模式,粘贴以下全量 Bash 代码:

bash 复制代码
#!/bin/bash
# ==============================================================================
# PEAK AI Hunter - UI Assets Backup Script
# Extracts critical custom XMLs from AOB's volatile default directory.
# ==============================================================================

# Define Splunk app directory and Safe Harbor directory
APP_DIR="/opt/splunk/etc/apps/TA-peak-llm-analyzer"
BACKUP_DIR="$HOME/peak_ui_backup"

echo "[INFO] Starting PEAK AI Hunter UI Backup process..."

# Step 1: Create the Safe Harbor directory structure
mkdir -p "$BACKUP_DIR/views"
mkdir -p "$BACKUP_DIR/nav"

# Step 2: Backup the Executive Dashboard
if [ -f "$APP_DIR/default/data/ui/views/peak_executive_dashboard.xml" ]; then
    cp "$APP_DIR/default/data/ui/views/peak_executive_dashboard.xml" "$BACKUP_DIR/views/"
    echo "[SUCCESS] Backed up: peak_executive_dashboard.xml"
else
    echo "[WARNING] Dashboard XML not found in target directory!"
fi

# Step 3: Backup the Custom Navigation Bar
if [ -f "$APP_DIR/default/data/ui/nav/default.xml" ]; then
    cp "$APP_DIR/default/data/ui/nav/default.xml" "$BACKUP_DIR/nav/"
    echo "[SUCCESS] Backed up: default.xml (Navigation Bar)"
else
    echo "[WARNING] Nav XML not found in target directory!"
fi

echo "[INFO] Backup complete. Your UI assets are safe in $BACKUP_DIR."

保存并退出 (Esc -> :wq)。


💻 第二部分:编写一键覆盖恢复脚本 (restore_ui.sh)

这个恢复脚本极其纯粹,它不包含任何账号密码,只负责将避风港中的高级 XML 重新覆盖回插件系统中。

在主目录创建恢复脚本:

bash 复制代码
vi restore_ui.sh

同样进入 vi 后,先按 Esc 键,输入 :set paste 开启防干扰模式,然后再按 i,粘贴以下代码:

bash 复制代码
#!/bin/bash
# ==============================================================================
# PEAK AI Hunter - UI Assets Restore Script
# Injects custom XMLs back into the app's default configuration directory.
# Note: Manual web refresh required via debug endpoint after execution.
# ==============================================================================

# Define Splunk app directory and Safe Harbor directory
APP_DIR="/opt/splunk/etc/apps/TA-peak-llm-analyzer"
BACKUP_DIR="$HOME/peak_ui_backup"

echo "[INFO] Starting PEAK AI Hunter UI Restoration process..."

# Step 1: Inject Dashboard XML back to default views
if [ -f "$BACKUP_DIR/views/peak_executive_dashboard.xml" ]; then
    cp "$BACKUP_DIR/views/peak_executive_dashboard.xml" "$APP_DIR/default/data/ui/views/"
    echo "[SUCCESS] Injected: peak_executive_dashboard.xml"
else
    echo "[ERROR] Backup Dashboard XML not found!"
fi

# Step 2: Inject Navigation XML back to default nav
if [ -f "$BACKUP_DIR/nav/default.xml" ]; then
    cp "$BACKUP_DIR/nav/default.xml" "$APP_DIR/default/data/ui/nav/"
    echo "[SUCCESS] Injected: default.xml (Navigation Bar)"
else
    echo "[ERROR] Backup Navigation XML not found!"
fi

echo "[INFO] File restoration complete."
echo "[REQUIRED] Please manually trigger Splunk cache refresh in your browser:"
echo "           --> https://localhost:8000/en-US/debug/refresh"

保存并退出 (Esc -> :wq)。


⚙️ 第三部分:赋予权限与终极复活演练

脚本就绪后,我们赋予它们 Linux 系统的执行权限:

bash 复制代码
chmod +x backup_ui.sh restore_ui.sh

🔥 防覆盖备份和恢复演练 (Disaster Recovery Drill):

  1. 执行备份安全锚定 :在终端运行 ./backup_ui.sh。看到双 [SUCCESS] 提示后,你的前端自定义 UI 界面的XML 文件(peak_executive_dashboard.xmldefault.xml)已经安全存入本地家目录。
  2. 人为制造毁灭性覆盖 :进入 Splunk 页面上的 Add-on Builder,打开你的 TA-peak-llm-analyzer 插件。在任何一个配置页点击一下 Save
  3. 确认AOB覆盖自定义UI:刷新大屏,你会发现之前自定义的UI大屏瞬间被 AOB 的简陋默认框架吞噬。
  4. 一键底层回写:回到终端,执行恢复脚本:
bash 复制代码
./restore_ui.sh
  1. 装在自定义UI配置 :打开你的浏览器,直接访问: https://localhost:8000/en-US/debug/refresh (根据你的真实环境,也可能是 http://你的IP:8000/en-US/debug/refresh) 点击页面最下方的 Refresh 按钮。重新回到插件首页,大屏和导航菜单等自定义 UI 配置已经成功恢复!

🎉 Day 18 结语: 通过这种"文件回写 + 手动调试刷新"的解耦设计,我们用最少、最安全的命令,保存了你的自定义 UI 配置。你再也不用担心 AOB 的"独裁覆写",开发后期可以放心更新代码、脚本和配置。

明天,Day 19:合规与脱敏,我们的后端核心、前端大屏、运维脚本全部完成封版,我们将进入最后的商业化发布流水线,学习如何将代码进行企业级合规脱敏并打包发布!

相关推荐
kp000008 小时前
如何平衡模型输出的“有用性”和“安全性
人工智能·安全·网络安全·信息安全·ai安全
Token炼金师8 小时前
自主的引擎:ReAct、MCP、多 Agent、Workflow 与沙箱护栏 —— Agent 与工具六器
人工智能·深度学习·llm
冬哥聊AI8 小时前
京东二面追问:你的 RAG 有几种检索路径?怎么决定走哪条?Query 路由四层框架
人工智能
乐橙开放平台8 小时前
明厨亮灶笔记:乐橙轻应用 H5 + 小程序插件,一套 BFF 出两张播放凭证
人工智能·笔记·物联网·小程序·音视频·notepad++
何时梦醒8 小时前
⚛️ React 19 + TypeScript 深度学习笔记 —— 从组件化思维到 WebGPU 端侧 AI 落地
前端·javascript·人工智能
码农学院8 小时前
Neo4j知识图谱赋能跨境电商GEO:LLM实体识别与AI搜索引擎结构化数据输出实战
人工智能·知识图谱·neo4j
东风破_8 小时前
大模型流式输出是怎么实现的?从 ReadableStream、Uint8Array 到 SSE
人工智能
ZZZMMM.zip8 小时前
断舍离清单 —— 鸿蒙AI智能助手开发全流程解析
人工智能·华为·harmonyos·鸿蒙·鸿蒙系统