Files
Linux_Docker_build_DayzServer/DockerFile/updatemod.sh

82 lines
2.7 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"
# 检查是否传入update_server参数
UPDATE_SERVER=false
if [ "$1" = "update_server" ]; then
UPDATE_SERVER=true
echo "==========================================" >> "$LOG_FILE"
echo "开始更新DayZ服务器和Mod..." >> "$LOG_FILE"
echo "时间: $(date)" >> "$LOG_FILE"
echo "==========================================" >> "$LOG_FILE"
else
echo "==========================================" >> "$LOG_FILE"
echo "开始更新DayZ Mod..." >> "$LOG_FILE"
echo "时间: $(date)" >> "$LOG_FILE"
echo "==========================================" >> "$LOG_FILE"
fi
# 检查环境变量
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 [ -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"
# 如果需要更新服务器,先添加服务器更新指令
if [ "$UPDATE_SERVER" = true ]; then
echo "添加DayZ服务器更新指令 (ID: 223350)" >> "$LOG_FILE"
echo "app_update 223350 validate" >> "$SCRIPT_FILE"
fi
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"