提交 69c44e4b authored 作者: 陈泽健's avatar 陈泽健

feat(scripts): 为多个脚本添加版本号管理和日志记录功能

- 在 check_server_health.ps1 中添加 SCRIPT_VERSION 变量并记录版本信息到日志
- 在 issue_handler.sh 中添加 SCRIPT_VERSION 变量、show_version 函数和支持 --version 参数
- 在 pakage_upload.sh 中添加 SCRIPT_VERSION 变量并支持 --version/-v 参数
- 在 program_update.sh 中添加 SCRIPT_VERSION 变量和 print_version 函数
- 在 remote_container_update_win.ps1 中添加 SCRIPT_VERSION 变量并记录版本到日志
- 在 remote_program_update.ps1 中添加 SCRIPT_VERSION 变量并记录工具版本信息
- 在 remote_update.sh 中添加 SCRIPT_VERSION 变量并支持 --version 参数
- 为所有脚本添加启动时的版本和参数记录以便回溯调试
上级 6864b183
{
"permissions": {
"allow": [
"Bash(npm install -g @modelcontextprotocol/server-chrome-devtools)"
]
}
}
#!/usr/bin/env bash #!/usr/bin/env bash
# -------------------- Version --------------------
# 脚本版本号(用于日志/截图回溯;需要时手工递增)
SCRIPT_VERSION="1.0.0"
# -------------------- /Version --------------------
# 设置标准环境变量,避免"参数列表过长"问题 # 设置标准环境变量,避免"参数列表过长"问题
export LANG=C export LANG=C
export LC_ALL=C export LC_ALL=C
# 显示版本信息
show_version() {
echo "issue_handler.sh version: ${SCRIPT_VERSION}"
}
# 检查并修复执行环境问题 # 检查并修复执行环境问题
fix_execution_environment() { fix_execution_environment() {
# 检查脚本换行符 # 检查脚本换行符
...@@ -2235,6 +2245,10 @@ main() { ...@@ -2235,6 +2245,10 @@ main() {
local ACTION="" local ACTION=""
local PLATFORM_ARG="" local PLATFORM_ARG=""
# 启动即记录版本与调用参数(便于回溯)
log_info "issue_handler.sh version=${SCRIPT_VERSION}"
log_info "Args: $*"
if [ $# -gt 0 ]; then if [ $# -gt 0 ]; then
# 解析命令行参数 # 解析命令行参数
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
......
#!/usr/bin/env bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
# -------------------- Version --------------------
# 版本号写死在脚本内,便于日志追溯(需要时手工递增)
SCRIPT_VERSION="1.0.0"
# -------------------- /Version --------------------
log() { printf '[%s] %s\n' "$(date '+%F %T')" "$*" >&2; } log() { printf '[%s] %s\n' "$(date '+%F %T')" "$*" >&2; }
usage() { usage() {
...@@ -22,6 +27,10 @@ Behavior (3.3): ...@@ -22,6 +27,10 @@ Behavior (3.3):
EOF EOF
} }
print_version() {
echo "program_update.sh version: ${SCRIPT_VERSION}"
}
PLATFORM="" PLATFORM=""
SYSTEM="" SYSTEM=""
UPDATE_TYPE="" UPDATE_TYPE=""
...@@ -35,6 +44,7 @@ while [[ $# -gt 0 ]]; do ...@@ -35,6 +44,7 @@ while [[ $# -gt 0 ]]; do
--update) UPDATE_TYPE="${2:-}"; shift 2;; --update) UPDATE_TYPE="${2:-}"; shift 2;;
--workdir) WORKDIR="${2:-}"; shift 2;; --workdir) WORKDIR="${2:-}"; shift 2;;
--restart-only) RESTART_ONLY=1; shift 1;; --restart-only) RESTART_ONLY=1; shift 1;;
--version) print_version; exit 0;;
-h|--help) usage; exit 0;; -h|--help) usage; exit 0;;
*) log "Unknown arg: $1"; usage; exit 2;; *) log "Unknown arg: $1"; usage; exit 2;;
esac esac
...@@ -45,6 +55,10 @@ if [[ -z "$PLATFORM" || -z "$SYSTEM" || -z "$UPDATE_TYPE" ]]; then ...@@ -45,6 +55,10 @@ if [[ -z "$PLATFORM" || -z "$SYSTEM" || -z "$UPDATE_TYPE" ]]; then
exit 2 exit 2
fi fi
# 启动即记录版本与调用参数(方便截图/回溯)
log "program_update.sh version=$SCRIPT_VERSION"
log "Args: platform=$PLATFORM system=$SYSTEM update=$UPDATE_TYPE workdir=$WORKDIR restart_only=$RESTART_ONLY"
# 仅在非 RESTART_ONLY 时初始化备份目录(避免 restart-only 还创建备份目录) # 仅在非 RESTART_ONLY 时初始化备份目录(避免 restart-only 还创建备份目录)
if [[ "$RESTART_ONLY" -eq 0 ]]; then if [[ "$RESTART_ONLY" -eq 0 ]]; then
TS="$(date '+%Y%m%d_%H%M%S')" TS="$(date '+%Y%m%d_%H%M%S')"
......
...@@ -9,6 +9,11 @@ $ErrorActionPreference = "Stop" ...@@ -9,6 +9,11 @@ $ErrorActionPreference = "Stop"
# 让当前 PowerShell 会话使用 UTF-8(尽量避免中文乱码) # 让当前 PowerShell 会话使用 UTF-8(尽量避免中文乱码)
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# -------------------- Version --------------------
# 脚本版本号(用于日志/截图回溯;需要时手工递增)
$SCRIPT_VERSION = "1.0.0"
# -------------------- /Version --------------------
function Write-Info($msg) { Write-Host "[INFO] $msg" -ForegroundColor Cyan } function Write-Info($msg) { Write-Host "[INFO] $msg" -ForegroundColor Cyan }
function Write-Warn($msg) { Write-Host "[WARN] $msg" -ForegroundColor Yellow } function Write-Warn($msg) { Write-Host "[WARN] $msg" -ForegroundColor Yellow }
function Write-Err ($msg) { Write-Host "[ERROR] $msg" -ForegroundColor Red } function Write-Err ($msg) { Write-Host "[ERROR] $msg" -ForegroundColor Red }
...@@ -179,6 +184,11 @@ function Invoke-PscpDownload { ...@@ -179,6 +184,11 @@ function Invoke-PscpDownload {
# -------------------- 3.1 采集参数 -------------------- # -------------------- 3.1 采集参数 --------------------
Write-Host "=== 远程程序更新(Windows 端入口)===" -ForegroundColor Green Write-Host "=== 远程程序更新(Windows 端入口)===" -ForegroundColor Green
# 版本记录(控制台输出 + 便于截图)
Write-Info ("remote_program_update.ps1 version={0}" -f $SCRIPT_VERSION)
Write-Info ("PowerShell={0} Host={1}" -f $PSVersionTable.PSVersion, $env:COMPUTERNAME)
Write-Info ("ScriptPath={0}" -f $PSCommandPath)
$serverIp = Read-NonEmpty "请输入服务器IP" $serverIp = Read-NonEmpty "请输入服务器IP"
$sshPortStr = Read-NonEmpty "请输入SSH端口" "22" $sshPortStr = Read-NonEmpty "请输入SSH端口" "22"
$sshPort = [int]$sshPortStr $sshPort = [int]$sshPortStr
...@@ -199,6 +209,17 @@ $tools = Require-PuttyTools ...@@ -199,6 +209,17 @@ $tools = Require-PuttyTools
$plink = $tools.plink $plink = $tools.plink
$pscp = $tools.pscp $pscp = $tools.pscp
# 记录工具版本(可选但对定位 plink 兼容性很有用)
try {
$plinkVer = & $plink -V 2>&1 | Select-Object -First 1
if ($plinkVer) { Write-Info ("plink: {0}" -f $plinkVer) }
} catch { }
try {
$pscpVer = & $pscp -V 2>&1 | Select-Object -First 1
if ($pscpVer) { Write-Info ("pscp: {0}" -f $pscpVer) }
} catch { }
# -------------------- 连接测试(3.1) -------------------- # -------------------- 连接测试(3.1) --------------------
Invoke-PlinkCommand -PlinkPath $plink -HostName $serverIp -Port $sshPort -User $username -Password $plainPwd -Command "echo Connected; uname -a" Invoke-PlinkCommand -PlinkPath $plink -HostName $serverIp -Port $sshPort -User $username -Password $plainPwd -Command "echo Connected; uname -a"
Write-Info "SSH 连接测试成功。" Write-Info "SSH 连接测试成功。"
...@@ -238,6 +259,9 @@ $zipName = Split-Path $zipPath -Leaf ...@@ -238,6 +259,9 @@ $zipName = Split-Path $zipPath -Leaf
Invoke-PlinkCommand -PlinkPath $plink -HostName $serverIp -Port $sshPort -User $username -Password $plainPwd -Command "cd '$remoteDir' && unzip -o '$zipName' -d '$remoteDir'" Invoke-PlinkCommand -PlinkPath $plink -HostName $serverIp -Port $sshPort -User $username -Password $plainPwd -Command "cd '$remoteDir' && unzip -o '$zipName' -d '$remoteDir'"
# ====== 默认执行 program_update.sh(实现 3.3 备份)并下载备份包到本机脚本目录 ====== # ====== 默认执行 program_update.sh(实现 3.3 备份)并下载备份包到本机脚本目录 ======
# 额外打印远端 program_update.sh 版本,便于回溯
Invoke-PlinkCommand -PlinkPath $plink -HostName $serverIp -Port $sshPort -User $username -Password $plainPwd -Command "cd '$remoteDir' && ./program_update.sh --version 2>/dev/null || true"
$execCmd = "cd '$remoteDir' && chmod +x ./program_update.sh && ./program_update.sh --platform '$platformType' --system '$systemType' --update '$updateType' --workdir '$remoteDir'" $execCmd = "cd '$remoteDir' && chmod +x ./program_update.sh && ./program_update.sh --platform '$platformType' --system '$systemType' --update '$updateType' --workdir '$remoteDir'"
$out = Invoke-PlinkCommand -PlinkPath $plink -HostName $serverIp -Port $sshPort -User $username -Password $plainPwd -Command $execCmd $out = Invoke-PlinkCommand -PlinkPath $plink -HostName $serverIp -Port $sshPort -User $username -Password $plainPwd -Command $execCmd
......
...@@ -63,6 +63,9 @@ $PSDefaultParameterValues['*:Encoding'] = 'utf8' ...@@ -63,6 +63,9 @@ $PSDefaultParameterValues['*:Encoding'] = 'utf8'
$SCRIPT_DIR = Split-Path -Parent $MyInvocation.MyCommand.Path $SCRIPT_DIR = Split-Path -Parent $MyInvocation.MyCommand.Path
$SSH_TIMEOUT = 30 $SSH_TIMEOUT = 30
# 脚本版本号(用于日志与报告)
$SCRIPT_VERSION = "1.0.1"
# PuTTY 工具路径 # PuTTY 工具路径
$script:PLINK_PATH = $null $script:PLINK_PATH = $null
$script:PSCP_PATH = $null $script:PSCP_PATH = $null
...@@ -3305,6 +3308,11 @@ function Main { ...@@ -3305,6 +3308,11 @@ function Main {
Write-Host "==================================================================" -ForegroundColor Cyan Write-Host "==================================================================" -ForegroundColor Cyan
Write-Host "" Write-Host ""
# 版本号打印记录(控制台 + 日志)
Write-Log -Level "INFO" -Message ("脚本版本: {0}" -f $SCRIPT_VERSION)
Write-Log -Level "INFO" -Message ("PowerShell 版本: {0}" -f $PSVersionTable.PSVersion)
Write-Log -Level "INFO" -Message ("脚本路径: {0}" -f $PSCommandPath)
Write-Log -Level "INFO" -Message "日志文件: $LOG_FILE" Write-Log -Level "INFO" -Message "日志文件: $LOG_FILE"
Write-Host "" Write-Host ""
......
...@@ -17,6 +17,11 @@ ...@@ -17,6 +17,11 @@
# ✅ 功能点3: 打包成tar.gz并上传网盘 - 已完成待验证 # ✅ 功能点3: 打包成tar.gz并上传网盘 - 已完成待验证
#====================================================================== #======================================================================
# -------------------- Version --------------------
# 脚本版本号(用于日志/截图回溯;需要时手工递增)
SCRIPT_VERSION="1.0.0"
# -------------------- /Version --------------------
# 颜色定义 # 颜色定义
RED='\033[0;31m' RED='\033[0;31m'
GREEN='\033[0;32m' GREEN='\033[0;32m'
...@@ -44,6 +49,12 @@ log_info() { ...@@ -44,6 +49,12 @@ log_info() {
echo -e "${GREEN}[INFO]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" echo -e "${GREEN}[INFO]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
} }
# 支持 --version / -v
if [[ "${1:-}" == "--version" || "${1:-}" == "-v" ]]; then
echo "pakage_upload.sh version: ${SCRIPT_VERSION}"
exit 0
fi
log_warn() { log_warn() {
echo -e "${YELLOW}[WARN]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1" echo -e "${YELLOW}[WARN]${NC} $(date '+%Y-%m-%d %H:%M:%S') - $1"
} }
...@@ -1653,6 +1664,10 @@ execute_package() { ...@@ -1653,6 +1664,10 @@ execute_package() {
# 主函数 # 主函数
#====================================================================== #======================================================================
main() { main() {
# 启动即记录版本与调用参数(便于回溯)
log_info "pakage_upload.sh version=${SCRIPT_VERSION}"
log_info "Args: $*"
# 检查是否以root权限运行 # 检查是否以root权限运行
if [ "$EUID" -ne 0 ]; then if [ "$EUID" -ne 0 ]; then
log_warn "建议使用root权限运行此脚本" log_warn "建议使用root权限运行此脚本"
......
...@@ -57,6 +57,11 @@ ...@@ -57,6 +57,11 @@
============================================================ ============================================================
#> #>
# -------------------- Version --------------------
# 脚本版本号(用于日志/截图回溯;需要时手工递增)
$SCRIPT_VERSION = "1.2.1"
# -------------------- /Version --------------------
param( param(
[string]$RemoteDir = "/home/containerUpdate" [string]$RemoteDir = "/home/containerUpdate"
) )
...@@ -1141,6 +1146,11 @@ function Main { ...@@ -1141,6 +1146,11 @@ function Main {
Write-Host "==================================================================" -ForegroundColor Cyan Write-Host "==================================================================" -ForegroundColor Cyan
Write-Host "" Write-Host ""
# 版本记录(控制台 + 日志 + 审计,便于回溯)
Write-Log -Level "INFO" -Message ("remote_container_update_win.ps1 version={0}" -f $SCRIPT_VERSION)
Write-Log -Level "INFO" -Message ("PowerShell={0} Host={1}" -f $PSVersionTable.PSVersion, $env:COMPUTERNAME)
Write-Log -Level "INFO" -Message ("ScriptPath={0}" -f $PSCommandPath)
# 记录脚本启动 # 记录脚本启动
Write-AuditLog -Action "SCRIPT_START" -ServerIP "N/A" -Container "N/A" -Details "脚本启动,日志文件: $LOG_FILE" Write-AuditLog -Action "SCRIPT_START" -ServerIP "N/A" -Container "N/A" -Details "脚本启动,日志文件: $LOG_FILE"
Write-Log -Level "INFO" -Message "日志文件: $LOG_FILE" Write-Log -Level "INFO" -Message "日志文件: $LOG_FILE"
......
...@@ -9,6 +9,11 @@ ...@@ -9,6 +9,11 @@
set -euo pipefail set -euo pipefail
# -------------------- Version --------------------
# 脚本版本号(用于日志/截图回溯;需要时手工递增)
SCRIPT_VERSION="1.0.0"
# -------------------- /Version --------------------
REMOTE_ARCH_ALLOW_REGEX='^(x86_64|amd64|i386|i686)$' REMOTE_ARCH_ALLOW_REGEX='^(x86_64|amd64|i386|i686)$'
declare -A SERVER_IP SERVER_USER SERVER_PASS declare -A SERVER_IP SERVER_USER SERVER_PASS
...@@ -34,6 +39,16 @@ log() { ...@@ -34,6 +39,16 @@ log() {
printf '[%(%F %T)T] [%s] %s\n' -1 "${level}" "$*" printf '[%(%F %T)T] [%s] %s\n' -1 "${level}" "$*"
} }
# 支持 --version / -v
if [[ "${1:-}" == "--version" || "${1:-}" == "-v" ]]; then
echo "remote_update.sh version: ${SCRIPT_VERSION}"
exit 0
fi
# 启动即记录版本与调用参数(便于回溯)
log INFO "remote_update.sh version=${SCRIPT_VERSION}"
log INFO "Args: $*"
DEFAULT_REMOTE_DIR="/home/containerUpdate" DEFAULT_REMOTE_DIR="/home/containerUpdate"
LOCAL_EMQX_DIR="/data/middleware/emqx" LOCAL_EMQX_DIR="/data/middleware/emqx"
LOCAL_PYTHON_DIR="/data/services/api/python-cmdb" LOCAL_PYTHON_DIR="/data/services/api/python-cmdb"
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论