diff --git a/Server/restart-scheduled.sh b/Server/restart-scheduled.sh index bdac987..3c12243 100755 --- a/Server/restart-scheduled.sh +++ b/Server/restart-scheduled.sh @@ -5,6 +5,9 @@ # # Требования: # - В server.properties: enable-rcon=true, rcon.password=..., rcon.port=... +# Пароль и порт должны совпадать с тем, что слушает сервер Minecraft. +# Либо задайте только в server.properties, либо переопределите через +# переменные окружения RCON_PASSWORD и RCON_PORT (см. ниже). # - RCON-клиент в PATH: сначала ищется mcrcon, иначе rcon (github.com/gorcon/rcon-cli) # - Права на systemctl для сервиса (удобнее всего — crontab root) # @@ -24,8 +27,14 @@ # Переменные окружения (необязательно): # MINECRAFT_SERVICE — имя unit (по умолчанию: minecraft) # RCON_HOST — хост RCON (по умолчанию: 127.0.0.1) +# RCON_PORT — порт RCON; если не задан — из server.properties (rcon.port) +# RCON_PASSWORD — пароль RCON; если не задан — из server.properties (rcon.password) # STOP_WAIT_SEC — макс. ожидание выхода процесса после stop (по умолчанию: 180) # RCON_TIMEOUT — таймаут для rcon (gorcon), напр. 60s (по умолчанию: 60s) +# +# Пример в crontab (пароль только в окружении cron, не в скрипте): +# 0 */6 * * * RCON_PASSWORD='ваш_секрет' /opt/PupaMLupa/Server/restart-scheduled.sh >>/var/log/mc-restart.log 2>&1 +# (в server.properties тот же пароль в rcon.password=..., иначе сервер не примет RCON) set -euo pipefail # cron часто даёт урезанный PATH — mcrcon обычно в /usr/bin или /usr/local/bin @@ -108,10 +117,13 @@ fi rc_en="$(read_prop enable-rcon)" [[ "${rc_en,,}" == "true" ]] || die "в server.properties включите enable-rcon=true" -RCON_PORT="$(read_prop rcon.port)" -RCON_PASSWORD="$(read_prop rcon.password)" -[[ -n "${RCON_PORT}" ]] || die "не задан rcon.port" -[[ -n "${RCON_PASSWORD}" ]] || die "не задан rcon.password" +_prop_port="$(read_prop rcon.port)" +_prop_pass="$(read_prop rcon.password)" +# Переменные окружения имеют приоритет (удобно для cron). +RCON_PORT="${RCON_PORT:-${_prop_port}}" +RCON_PASSWORD="${RCON_PASSWORD:-${_prop_pass}}" +[[ -n "${RCON_PORT}" ]] || die "не задан rcon.port (server.properties или переменная RCON_PORT)" +[[ -n "${RCON_PASSWORD}" ]] || die "не задан rcon.password (server.properties или переменная RCON_PASSWORD)" # Проверка RCON rcon_exec "list" >/dev/null || die "RCON не отвечает (хост ${RCON_HOST}, порт ${RCON_PORT})"