./bercon

BattlEye RCON CLI


bercon

logo

./bercon je rozhraní příkazového řádku pro protokol BattlEye RCON.

[!NOTE]
Tento dokument je k dispozici v jazycích: eng 🇬🇧, cz 🇨🇿, rus 🇷🇺, ua 🇺🇦.

Popis

bercon poskytuje pohodlný způsob interakce se serverem pomocí příkazu BattlEye RCON (Remote Console) protokolu. Tento nástroj umožňuje provádět různé příkazy, ovládat server a sledovat odpovědi serveru.

Je vhodný pro servery jako Arma2, Arma3, DayZ atd. využívající protokol protokol BERConProtocol, přičemž v úplném seznamu her můžete podívat na úplný seznam her na webové stránce BattlEye.

Instalace

Nejnovější verzi programu si můžete stáhnout pomocí následujících odkazů Linux nebo Windows

Pro Linux můžete také použít příkaz

curl -#SfLo /usr/bin/bercon \
  https://github.com/WoozyMasta/bercon/releases/latest/download/bercon
chmod +x /usr/bin/bercon
bercon -h && bercon -V

Nebo si sestavení proveďte sami

git clone https://github.com/WoozyMasta/bercon
cd bercon
cargo build

Parametry

BattlEye RCON CLI

Příkaz: bercon [OPTIONS] --password <HESLO> <PŘÍKAZ>

Příkazy:
  cli      Otevře interaktivní rozhraní příkazového řádku
  execute  Spustí příkaz (např. příkazy nebo hráče).
  listen   Poslouchat odpovědi serveru
  help     zobrazí tuto zprávu nebo nápovědu k zadaným dílčím příkazům

Možnosti:
  -i, --ip <IP>                IPv4 adresa serveru [env: BERCON_IP=] [výchozí: 127.0.0.1]
  -p, --port <PORT>            UDP port serveru [env: BERCON_PORT=] [výchozí: 2305]
  -P, --password <PASSWORD>    Heslo [env: BERCON_HESLO]
  -t, --timeout <TIMEOUT>      Časový limit v sekundách [env: BERCON_TIMEOUT=] [výchozí: 45]
  -k, --keepalive <KEEPALIVE>  Sledování spojení v sekundách [env: BERCON_KEEPALIVE=] [výchozí: 30]
  -d, --debug                  Výstup ladicích zpráv a dat
  -h, --help                   Výpis nápovědy
  -V, --version                Výpis verze

[!NOTE]
Pokud je časový limit nastaven na hodnotu menší než řízení spojení, pak se na nastavenou hodnotu změní i hodnota řízení připojení.
Řízení připojení nelze nastavit na více než 45 sekund, protože to nemá smysl, a všechny větší hodnoty budou nastaveny na 45 sekund.

Příklady použití

Můžete použít argumenty, proměnné nebo kombinaci obojího

bercon -p 2306 -P myPass exec players
BERCON_PASSWORD=myPass BERCON_PORT=2306 bercon exec players
BERCON_PASSWORD=myPass bercon -p 2306 exec players

Hodnota argumentu má nejvyšší prioritu před proměnnou prostředí

# pas$$word bude použito
BERCON_PASSWORD='strong' bercon -P 'pas$$word' exec players

Nezapomeňte použít uvozovky, protože hesla a příkazy mohou obsahovat řídicí znaky příkazového řádku. řídicí znaky příkazového řádku. Při použití argumentů s -, jako je say -1, byste měli zadat --, abyste programu sdělili, že analýza argumentů je dokončena.

bercon --ip 192.168.0.10 --port 2306 --heslo '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!'

Další linux příklady

Proměnné můžete také použít k uložení parametrů pro různé servery v různých souborech

# v souboru ~/.server-1.env
BERCON_IP=192.168.0.10
BERCON_PORT=2306
BERCON_PASSWORD='pas$$word'.

# načtěte soubor a proveďte příkaz
. .server-1.env && bercon exec players

Příklad funkce, která vám umožní provádět příkazy na několika vašich DayZ serverů současně

[!TIP]
Funkce lze umístit do ~/.bashrc pro rychlý přístup k nim.

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
}

# zobrazí hráče na všech serverech
dayz-all-rcon players
# trvale zakáže GUID na všech serverech
dayz-all-rcon addBan "$GUID" 0 cheater

Tento příklad vám umožní pohodlně provést odložený restart na všech serverech DayZ současně. serverů DayZ ve stejnou dobu a upozorní hráče, že se blíží restart.

[!TIP]
Tento příklad recykluje funkci z předchozího příkladu

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'
}

#restartovat všechny servery po 120 (výchozí) sekundách
dayz-all-restart
#restartovat všechny servery po 360 sekundách
dayz-all-restart 360

[!CAUTION]
V době psaní tohoto článku má upravená verze serveru DayZ pro Linux problém se zastavováním serveru (T179734), možná budete chtít sledovat stav procesu. Jako jedno z řešení slouží například skript DayZ Linux Server watchdog.

Pomocí tohoto příkladu můžete zastavit a vypnout všechny servery DayZ před údržbou svého serveru

[!TIP]

Tento příklad využívá funkci z předchozího příkladu.

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
}

# vypnutí všech serverů po 360 sekundách
dayz-all-shutdown 360