./bercon
є інтерфейсом командного рядка для протоколу BattlEye RCON
bercon
надає зручний спосіб взаємодії із сервером, використовуючи
протокол BattlEye RCON (Remote Console).
Цей інструмент дозволяє виконувати різні команди,
керувати сервером і відстежувати відповіді від сервера.
Підійде для таких серверів як Arma2, Arma3, DayZ тощо, які використовують протокол BERConProtocol, з повним переліком ігор ви можете ознайомитись на сайті BattlEye
Ви можете завантажити останню версію програми перейшовши за посиланнями Linux або Windows
Для linux також можна скористатися командою
curl -#SfLo /usr/bin/bercon \
https://github.com/WoozyMasta/bercon/releases/latest/download/bercon
chmod +x /usr/bin/bercon
bercon -h && bercon -V
Або виконати збірку самостійно
git clone https://github.com/WoozyMasta/bercon
cd bercon
cargo build
BattlEye RCON CLI
Використання: bercon [ОПЦІЇ] --password <ПАРОЛЬ> <КОМАНДА>
Команди:
cli Відкрити інтерактивний інтерфейс командного рядка
exec Виконати команду (наприклад, commands або players)
listen Слухати відповіді сервера
help Вивести це повідомлення або допомогу для зазначених підкоманд
Опції:
-i, --ip <IP> IPv4 адреса сервера [env: BERCON_IP=] [за замовчуванням: 127.0.0.1]
-p, --port <PORT> UDP порт сервера [env: BERCON_PORT=] [за замовчуванням: 2305].
-P, --password <PASSWORD> Пароль [env: BERCON_PASSWORD]
-t, --timeout <TIMEOUT> Таймаут у секундах [env: BERCON_TIMEOUT=] [за замовчуванням: 45]
-k, --keepalive <KEEPALIVE> Контроль підключення в секундах [env: BERCON_KEEPALIVE=] [за замовчуванням: 30]
-d, --debug Виводити налагоджувальні повідомлення і дані
-h, --help Вивести довідку
-V, --version Вивести версію
Note
Якщо встановлено таймаут менший, ніж контроль підключення,
то значення контролю підключення також зміниться на встановлене.
Контроль підключення не може бути встановлений на більше, ніж 45 секунд, тому
що це не має сенсу, і всі більші значення будуть встановлені на 45 секунд.
Можна використовувати аргументи, змінні або їхню комбінацію
bercon -p 2306 -P myPass exec players
BERCON_PASSWORD=myPass BERCON_PORT=2306 bercon exec players
BERCON_PASSWORD=myPass bercon -p 2306 exec players
Значення аргументу має найвищий пріоритет перед змінною середовища
# буде використано pas$$word
BERCON_PASSWORD='strong' bercon -P 'pas$$word' exec players
Не забудьте використовувати лапки, оскільки паролі та команди можуть містити
керуючі символи командного рядка.
Коли ви використовуєте аргументи з -
, наприклад, say -1
, слід
вказати --
, щоб повідомити програмі, що аналіз аргументів завершено
bercon --ip 192.168.0.10 --port 2306 --password 'pas$$word' exec -- '#lock'
bercon -i 192.168.0.10 -p 2306 -P 'pas$$word' exec -- '#unlock'
bercon -t1 -i 192.168.0.10 -p 2306 -P 'pas$$$word' exec -- say -1 'Hello world!'
Ви також можете використовувати змінні для збереження параметрів для різних серверів у різних файлах
# у файлі ~/.server-1.env
BERCON_IP=192.168.0.10
BERCON_PORT=2306
BERCON_PASSWORD='pas$$word'
# прочитати файл і виконати команду
. .server-1.env && bercon exec players
Приклад функції, яка дозволить виконувати команди на декількох ваших серверах DayZ одночасно
Tip
Функції можна розмістити в ~/.bashrc
для швидкого доступу до них
export DAYZ_SERRVER_COUNT=5
dayz-all-rcon() {
for i in $(seq 1 "$DAYZ_SERVERS_COUNT"); do
printf '[%s] ' "Server-$i"
. "~/.server-$i.env"
bercon -t1 exec -- "$1";
echo
done
}
# показати гравців на всіх серверах
dayz-all-rcon players
# забанити GUID на постійно на всіх серверах
dayz-all-rcon addBan "$GUID" 0 cheater
Цей приклад дозволить зручно виконати відкладений рестарт на всіх серверах DayZ одночасно. DayZ одночасно, попередньо сповістивши гравців про швидкий перезапуск
Tip
Цей приклад утилізує функцію з попереднього прикладу
dayz-all-restart() {
local timer="${1:-120}" step="${2:-10}"
dayz-all-rcon '#lock'
dayz-all-rcon say -1 "Server locked for new connection, restart after $timer seconds"
for i in $(seq "$timer" "-$step" 0); do
sleep "$step"
dayz-all-rcon say -1 "Restart server after $timer seconds"
done
dayz-all-rcon '#shutdown'
}
# перезапустити всі сервери через 120 (за замовчуванням) секунд
dayz-all-restart
# перезавантажте всі сервери через 360 секунд
dayz-all-restart 360
Caution
На момент написання модифікована версія DayZ сервера для Linux має проблему із зупинкою сервера (T179734), можливо вам знадобиться додатково стежити за станом процесу. Як одне з рішень, наприклад скрипт DayZ Linux Server watchdog
За допомогою цього прикладу ви можете зупинити і відключити всі сервери DayZ перед обслуговуванням вашого сервера
Tip
Цей приклад утилізує функцію з попереднього прикладу
dayz-all-shutdown() {
dayz-all-restart "${1:-120}" "${2:-10}"
for i in $(seq 1 "$DAYZ_SERVERS_COUNT"); do
systemctl --user stop "dayz-server@$i.service" &
systemctl --user disable "dayz-server@$i.service"
done
wait
}
# вимкнути всі сервери через 360 секунд
dayz-all-shutdown 360