updatemod.sh 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. # 检查是否传入update_server参数
  10. UPDATE_SERVER=false
  11. if [ "$1" = "update_server" ]; then
  12. UPDATE_SERVER=true
  13. echo "==========================================" >> "$LOG_FILE"
  14. echo "开始更新DayZ服务器和Mod..." >> "$LOG_FILE"
  15. echo "时间: $(date)" >> "$LOG_FILE"
  16. echo "==========================================" >> "$LOG_FILE"
  17. else
  18. echo "==========================================" >> "$LOG_FILE"
  19. echo "开始更新DayZ Mod..." >> "$LOG_FILE"
  20. echo "时间: $(date)" >> "$LOG_FILE"
  21. echo "==========================================" >> "$LOG_FILE"
  22. fi
  23. # 检查环境变量
  24. if [ -z "$STEAM_USERNAME" ] || [ -z "$STEAM_PASSWORD" ]; then
  25. echo "错误: 请设置 STEAM_USERNAME 和 STEAM_PASSWORD 环境变量" >> "$LOG_FILE"
  26. echo "当前环境变量状态:" >> "$LOG_FILE"
  27. echo "STEAM_USERNAME: ${STEAM_USERNAME:-未设置}" >> "$LOG_FILE"
  28. echo "STEAM_PASSWORD: ${STEAM_PASSWORD:-未设置}" >> "$LOG_FILE"
  29. exit 1
  30. fi
  31. cd /opt/steamcmd
  32. if [ -n "$MOD_IDS" ]; then
  33. echo "开始更新Mod..." >> "$LOG_FILE"
  34. IFS=',' read -ra MOD_ARRAY <<< "$MOD_IDS"
  35. SCRIPT_FILE="/opt/steamcmd/update_mods.txt"
  36. echo "创建SteamCMD脚本文件: $SCRIPT_FILE" >> "$LOG_FILE"
  37. echo "login $STEAM_USERNAME $STEAM_PASSWORD" > "$SCRIPT_FILE"
  38. # 如果需要更新服务器,先添加服务器更新指令
  39. if [ "$UPDATE_SERVER" = true ]; then
  40. echo "添加DayZ服务器更新指令 (ID: 223350)" >> "$LOG_FILE"
  41. echo "app_update 223350 validate" >> "$SCRIPT_FILE"
  42. fi
  43. for mod_id in "${MOD_ARRAY[@]}"; do
  44. echo "添加Mod ID: $mod_id 到更新脚本" >> "$LOG_FILE"
  45. echo "workshop_download_item 221100 $mod_id validate" >> "$SCRIPT_FILE"
  46. done
  47. echo "quit" >> "$SCRIPT_FILE"
  48. echo "SteamCMD脚本内容:" >> "$LOG_FILE"
  49. cat "$SCRIPT_FILE" >> "$LOG_FILE"
  50. echo "开始执行SteamCMD脚本..." >> "$LOG_FILE"
  51. ./steamcmd.sh +runscript update_mods.txt
  52. if [ $? -eq 0 ]; then
  53. echo "所有Mod更新完成" >> "$LOG_FILE"
  54. else
  55. echo "Mod更新过程中出现错误" >> "$LOG_FILE"
  56. fi
  57. rm -f "$SCRIPT_FILE"
  58. echo "清理临时脚本文件" >> "$LOG_FILE"
  59. else
  60. echo "未配置Mod ID,跳过Mod更新" >> "$LOG_FILE"
  61. fi
  62. echo "==========================================" >> "$LOG_FILE"
  63. echo "Mod更新完成!" >> "$LOG_FILE"
  64. echo "时间: $(date)" >> "$LOG_FILE"
  65. echo "==========================================" >> "$LOG_FILE"