updatemod.sh 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/bin/bash
  2. # DayZ Mod更新脚本
  3. # 使用方法: docker compose run --rm steamcmd updatemod
  4. # 或通过crontab自动运行(每15分钟)
  5. set -e
  6. # 设置日志文件路径
  7. LOG_FILE="/var/log/updatemod.log"
  8. echo "==========================================" >> "$LOG_FILE"
  9. echo "开始更新DayZ Mod..." >> "$LOG_FILE"
  10. echo "时间: $(date)" >> "$LOG_FILE"
  11. echo "==========================================" >> "$LOG_FILE"
  12. # 检查环境变量
  13. if [ -z "$STEAM_USERNAME" ] || [ -z "$STEAM_PASSWORD" ]; then
  14. echo "错误: 请设置 STEAM_USERNAME 和 STEAM_PASSWORD 环境变量" >> "$LOG_FILE"
  15. exit 1
  16. fi
  17. # 切换到SteamCMD目录
  18. cd /opt/steamcmd
  19. # 检查SteamCMD是否已安装
  20. if [ ! -f "/opt/steamcmd/steamcmd.sh" ]; then
  21. echo "SteamCMD未安装,开始下载和安装..." >> "$LOG_FILE"
  22. wget -O /opt/steamcmd/steamcmd_linux.tar.gz ${STEAMCMD_URL}
  23. tar xvzf /opt/steamcmd/steamcmd_linux.tar.gz -C /opt/steamcmd
  24. rm /opt/steamcmd/steamcmd_linux.tar.gz
  25. chmod +x /opt/steamcmd/steamcmd.sh
  26. echo "SteamCMD安装完成!" >> "$LOG_FILE"
  27. fi
  28. # 更新Mod(如果有配置的话)
  29. if [ -n "$MOD_IDS" ]; then
  30. echo "开始更新Mod..." >> "$LOG_FILE"
  31. IFS=',' read -ra MOD_ARRAY <<< "$MOD_IDS"
  32. for mod_id in "${MOD_ARRAY[@]}"; do
  33. echo "更新Mod ID: $mod_id" >> "$LOG_FILE"
  34. ./steamcmd.sh +login $STEAM_USERNAME $STEAM_PASSWORD +workshop_download_item 221100 $mod_id +quit
  35. if [ $? -eq 0 ]; then
  36. echo "Mod $mod_id 更新完成" >> "$LOG_FILE"
  37. else
  38. echo "Mod $mod_id 更新失败" >> "$LOG_FILE"
  39. fi
  40. done
  41. else
  42. echo "未配置Mod ID,跳过Mod更新" >> "$LOG_FILE"
  43. fi
  44. echo "==========================================" >> "$LOG_FILE"
  45. echo "Mod更新完成!" >> "$LOG_FILE"
  46. echo "时间: $(date)" >> "$LOG_FILE"
  47. echo "==========================================" >> "$LOG_FILE"