🚀 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):
- 执行备份安全锚定 :在终端运行
./backup_ui.sh。看到双[SUCCESS]提示后,你的前端自定义 UI 界面的XML 文件(peak_executive_dashboard.xml和default.xml)已经安全存入本地家目录。 - 人为制造毁灭性覆盖 :进入 Splunk 页面上的 Add-on Builder,打开你的
TA-peak-llm-analyzer插件。在任何一个配置页点击一下 Save。 - 确认AOB覆盖自定义UI:刷新大屏,你会发现之前自定义的UI大屏瞬间被 AOB 的简陋默认框架吞噬。
- 一键底层回写:回到终端,执行恢复脚本:
bash
./restore_ui.sh
- 装在自定义UI配置 :打开你的浏览器,直接访问:
https://localhost:8000/en-US/debug/refresh(根据你的真实环境,也可能是 http://你的IP:8000/en-US/debug/refresh) 点击页面最下方的 Refresh 按钮。重新回到插件首页,大屏和导航菜单等自定义 UI 配置已经成功恢复!
🎉 Day 18 结语: 通过这种"文件回写 + 手动调试刷新"的解耦设计,我们用最少、最安全的命令,保存了你的自定义 UI 配置。你再也不用担心 AOB 的"独裁覆写",开发后期可以放心更新代码、脚本和配置。
明天,Day 19:合规与脱敏,我们的后端核心、前端大屏、运维脚本全部完成封版,我们将进入最后的商业化发布流水线,学习如何将代码进行企业级合规脱敏并打包发布!