82 lines
2.7 KiB
Bash
82 lines
2.7 KiB
Bash
#!/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" |