updatemod.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. #!/bin/bash
  2. set -e
  3. # 加载环境变量(解决cron任务无法读取环境变量的问题)
  4. if [ -f "/etc/environment" ]; then
  5. export $(cat /etc/environment | xargs)
  6. fi
  7. # 设置日志文件路径
  8. LOG_FILE="/var/log/updatemod.log"
  9. echo "==========================================" >> "$LOG_FILE"
  10. echo "开始更新DayZ Mod..." >> "$LOG_FILE"
  11. echo "时间: $(date)" >> "$LOG_FILE"
  12. echo "==========================================" >> "$LOG_FILE"
  13. # 检查环境变量
  14. if [ -z "$STEAM_USERNAME" ] || [ -z "$STEAM_PASSWORD" ]; then
  15. echo "错误: 请设置 STEAM_USERNAME 和 STEAM_PASSWORD 环境变量" >> "$LOG_FILE"
  16. echo "当前环境变量状态:" >> "$LOG_FILE"
  17. echo "STEAM_USERNAME: ${STEAM_USERNAME:-未设置}" >> "$LOG_FILE"
  18. echo "STEAM_PASSWORD: ${STEAM_PASSWORD:-未设置}" >> "$LOG_FILE"
  19. exit 1
  20. fi
  21. cd /opt/steamcmd
  22. if [ ! -f "/opt/steamcmd/steamcmd.sh" ]; then
  23. echo "SteamCMD未安装,开始下载和安装..." >> "$LOG_FILE"
  24. wget -O /opt/steamcmd/steamcmd_linux.tar.gz ${STEAMCMD_URL}
  25. tar xvzf /opt/steamcmd/steamcmd_linux.tar.gz -C /opt/steamcmd
  26. rm /opt/steamcmd/steamcmd_linux.tar.gz
  27. chmod +x /opt/steamcmd/steamcmd.sh
  28. echo "SteamCMD安装完成!" >> "$LOG_FILE"
  29. fi
  30. if [ -n "$MOD_IDS" ]; then
  31. echo "开始更新Mod..." >> "$LOG_FILE"
  32. IFS=',' read -ra MOD_ARRAY <<< "$MOD_IDS"
  33. SCRIPT_FILE="/opt/steamcmd/update_mods.txt"
  34. echo "创建SteamCMD脚本文件: $SCRIPT_FILE" >> "$LOG_FILE"
  35. echo "login $STEAM_USERNAME $STEAM_PASSWORD" > "$SCRIPT_FILE"
  36. for mod_id in "${MOD_ARRAY[@]}"; do
  37. echo "添加Mod ID: $mod_id 到更新脚本" >> "$LOG_FILE"
  38. echo "workshop_download_item 221100 $mod_id validate" >> "$SCRIPT_FILE"
  39. done
  40. echo "quit" >> "$SCRIPT_FILE"
  41. echo "SteamCMD脚本内容:" >> "$LOG_FILE"
  42. cat "$SCRIPT_FILE" >> "$LOG_FILE"
  43. echo "开始执行SteamCMD脚本..." >> "$LOG_FILE"
  44. ./steamcmd.sh +runscript update_mods.txt
  45. if [ $? -eq 0 ]; then
  46. echo "所有Mod更新完成" >> "$LOG_FILE"
  47. else
  48. echo "Mod更新过程中出现错误" >> "$LOG_FILE"
  49. fi
  50. rm -f "$SCRIPT_FILE"
  51. echo "清理临时脚本文件" >> "$LOG_FILE"
  52. else
  53. echo "未配置Mod ID,跳过Mod更新" >> "$LOG_FILE"
  54. fi
  55. echo "==========================================" >> "$LOG_FILE"
  56. echo "Mod更新完成!" >> "$LOG_FILE"
  57. echo "时间: $(date)" >> "$LOG_FILE"
  58. echo "==========================================" >> "$LOG_FILE"