Refine restart-scheduled.sh script to prioritize environment variables for RCON configuration, enhancing flexibility for cron usage. Update documentation for clarity on RCON settings and usage examples.
This commit is contained in:
@@ -5,6 +5,9 @@
|
|||||||
#
|
#
|
||||||
# Требования:
|
# Требования:
|
||||||
# - В server.properties: enable-rcon=true, rcon.password=..., rcon.port=...
|
# - В 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)
|
# - RCON-клиент в PATH: сначала ищется mcrcon, иначе rcon (github.com/gorcon/rcon-cli)
|
||||||
# - Права на systemctl для сервиса (удобнее всего — crontab root)
|
# - Права на systemctl для сервиса (удобнее всего — crontab root)
|
||||||
#
|
#
|
||||||
@@ -24,8 +27,14 @@
|
|||||||
# Переменные окружения (необязательно):
|
# Переменные окружения (необязательно):
|
||||||
# MINECRAFT_SERVICE — имя unit (по умолчанию: minecraft)
|
# MINECRAFT_SERVICE — имя unit (по умолчанию: minecraft)
|
||||||
# RCON_HOST — хост RCON (по умолчанию: 127.0.0.1)
|
# 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)
|
# STOP_WAIT_SEC — макс. ожидание выхода процесса после stop (по умолчанию: 180)
|
||||||
# RCON_TIMEOUT — таймаут для rcon (gorcon), напр. 60s (по умолчанию: 60s)
|
# 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
|
set -euo pipefail
|
||||||
# cron часто даёт урезанный PATH — mcrcon обычно в /usr/bin или /usr/local/bin
|
# cron часто даёт урезанный PATH — mcrcon обычно в /usr/bin или /usr/local/bin
|
||||||
@@ -108,10 +117,13 @@ fi
|
|||||||
rc_en="$(read_prop enable-rcon)"
|
rc_en="$(read_prop enable-rcon)"
|
||||||
[[ "${rc_en,,}" == "true" ]] || die "в server.properties включите enable-rcon=true"
|
[[ "${rc_en,,}" == "true" ]] || die "в server.properties включите enable-rcon=true"
|
||||||
|
|
||||||
RCON_PORT="$(read_prop rcon.port)"
|
_prop_port="$(read_prop rcon.port)"
|
||||||
RCON_PASSWORD="$(read_prop rcon.password)"
|
_prop_pass="$(read_prop rcon.password)"
|
||||||
[[ -n "${RCON_PORT}" ]] || die "не задан rcon.port"
|
# Переменные окружения имеют приоритет (удобно для cron).
|
||||||
[[ -n "${RCON_PASSWORD}" ]] || die "не задан rcon.password"
|
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
|
||||||
rcon_exec "list" >/dev/null || die "RCON не отвечает (хост ${RCON_HOST}, порт ${RCON_PORT})"
|
rcon_exec "list" >/dev/null || die "RCON не отвечает (хост ${RCON_HOST}, порт ${RCON_PORT})"
|
||||||
|
|||||||
Reference in New Issue
Block a user