Files
Linux_Docker_build_DayzServer/DockerFile/updatemod.sh
2025-07-25 14:15:04 +08:00

75 lines
2.4 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
set -e
# 加载环境变量解决cron任务无法读取环境变量的问题
if [ -f "/etc/environment" ]; then
export $(cat /etc/environment | xargs)
fi
# 设置日志文件路径
LOG_FILE="/var/log/updatemod.log"
echo "==========================================" >> "$LOG_FILE"
echo "开始更新DayZ Mod..." >> "$LOG_FILE"
echo "时间: $(date)" >> "$LOG_FILE"
echo "==========================================" >> "$LOG_FILE"
# 检查环境变量
if [ -z "$STEAM_USERNAME" ] || [ -z "$STEAM_PASSWORD" ]; then
echo "错误: 请设置 STEAM_USERNAME 和 STEAM_PASSWORD 环境变量" >> "$LOG_FILE"
echo "当前环境变量状态:" >> "$LOG_FILE"
echo "STEAM_USERNAME: ${STEAM_USERNAME:-未设置}" >> "$LOG_FILE"
echo "STEAM_PASSWORD: ${STEAM_PASSWORD:-未设置}" >> "$LOG_FILE"
exit 1
fi
cd /opt/steamcmd
if [ ! -f "/opt/steamcmd/steamcmd.sh" ]; then
echo "SteamCMD未安装开始下载和安装..." >> "$LOG_FILE"
wget -O /opt/steamcmd/steamcmd_linux.tar.gz ${STEAMCMD_URL}
tar xvzf /opt/steamcmd/steamcmd_linux.tar.gz -C /opt/steamcmd
rm /opt/steamcmd/steamcmd_linux.tar.gz
chmod +x /opt/steamcmd/steamcmd.sh
echo "SteamCMD安装完成" >> "$LOG_FILE"
fi
if [ -n "$MOD_IDS" ]; then
echo "开始更新Mod..." >> "$LOG_FILE"
IFS=',' read -ra MOD_ARRAY <<< "$MOD_IDS"
SCRIPT_FILE="/opt/steamcmd/update_mods.txt"
echo "创建SteamCMD脚本文件: $SCRIPT_FILE" >> "$LOG_FILE"
echo "login $STEAM_USERNAME $STEAM_PASSWORD" > "$SCRIPT_FILE"
for mod_id in "${MOD_ARRAY[@]}"; do
echo "添加Mod ID: $mod_id 到更新脚本" >> "$LOG_FILE"
echo "workshop_download_item 221100 $mod_id validate" >> "$SCRIPT_FILE"
done
echo "quit" >> "$SCRIPT_FILE"
echo "SteamCMD脚本内容:" >> "$LOG_FILE"
cat "$SCRIPT_FILE" >> "$LOG_FILE"
echo "开始执行SteamCMD脚本..." >> "$LOG_FILE"
./steamcmd.sh +runscript update_mods.txt
if [ $? -eq 0 ]; then
echo "所有Mod更新完成" >> "$LOG_FILE"
else
echo "Mod更新过程中出现错误" >> "$LOG_FILE"
fi
rm -f "$SCRIPT_FILE"
echo "清理临时脚本文件" >> "$LOG_FILE"
else
echo "未配置Mod ID跳过Mod更新" >> "$LOG_FILE"
fi
echo "==========================================" >> "$LOG_FILE"
echo "Mod更新完成" >> "$LOG_FILE"
echo "时间: $(date)" >> "$LOG_FILE"
echo "==========================================" >> "$LOG_FILE"