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

相关推荐
Mid_search5 小时前
随机排列与Fisher-Yates算法
人工智能·深度学习·强化学习·随机排列·fisher-yates
智塑未来9 小时前
中小公司在线文档选型:从协作入口到安全边界
运维·安全
ZGIAI9 小时前
ZGI Workflow:条件分支走错时先查哪一层
人工智能·架构
X54先生(人文科技)9 小时前
《元创力》纪实录 · 桥段 《窑变纪元:一份来自星历2227年的深空考古笔记》
人工智能·开源·ai写作·零知识证明
山东科恩光电9 小时前
提升橡塑行业安全性,科恩密佑KKL-01光敏传感器的应用优势与前景
安全
ZGIAI9 小时前
ZGI 文件产物:生成报告后怎样交付
人工智能·架构
东方-教育技术博主9 小时前
自动编码在教育场景中的重要性:一项基于多源证据的深度综述
大数据·人工智能
骥龙10 小时前
模块二:Ollama本地模型部署与OpenCode代理配置
人工智能
阡之尘埃10 小时前
Python数据分析案例85——大模型微调全流程(SFT的LoRA微调)
人工智能·python·深度学习·语言模型·llm·微调·千问
Regentsoft丽晶软件10 小时前
品牌方新品上市促销政策无法实时同步经销商,有没有支持总部-经销商-终端一站式的分销解决方案?
人工智能·经验分享·数据库架构