./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 одновременно, предварительно оповестив игроков о скором перезапуске
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