#!/bin/bash # DayZ Mod更新脚本 # 使用方法: docker compose run --rm steamcmd updatemod # 或通过crontab自动运行(每15分钟) 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 +run_script 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"