Rust Spielerzahl mit Bash Befehl auslesen?

1 Antwort

Hallo

Rust Spielerzahl mit Bash Befehl auslesen?

Wenn die Daten die Du möchtest auch als ASCII-Text protokolliert werden sollte das kein Problem sein.

Ich würde gerne mit einem .sh Script die Spielerzahl eines Rust Server
auslesen,

cat rust_logdatei.log

sollte das Logfile, so es eines gibt und so heißt, lesen.

um damit via if bei weniger als 20 Spielern den Server wipen
lassen.

ANZAHL=$(cat rust_logdatei.log | grep SPIELERANZAHL)
# oder
ANZAHL=$(cat rust_logdatei.log | grep "logged in")

Natürlich auch ohne useless use of cat ;-)

ANZAHL=$(grep SPIELERANZAHL rust_logdatei.log)

Hängt davon ab wie Du die Spieler "als aktiv" ermittelst, was im Logfile steht und wie die Datei wirklich heißt.

Geht das? Wie?

if [ $SPIELERANZAHL -lt 20 ];
then
wipe-Kommando
fi

Wenn Du mal ein (einen Teil des) Logfiles bereit stellst kann man da sicher was programmieren das Deinen Wunsch erfüllt. So bleibt es halt ein lediglich Gerüst um darauf aufbauen zu können.

Linuxhase

Woher ich das weiß:eigene Erfahrung – Ich benutze seit 2007 Linux und habe LPIC101 und LPIC102

ninelore 
Beitragsersteller
 07.10.2017, 17:33

im log steht nur xxx joined und xxx left . die spieleranzahl wird via RCON herausgegeben. Allerdings würde mich interresieren wie man die Spielerzahl mittels SteamAPI / Steamcmd bekommen kann...

Linuxhase  07.10.2017, 17:48
@ninelore

@ninelore

im log steht nur xxx joined und xxx left

Das ist doch ausreichend; es ist ja keiner mit dem Server verbunden wenn er nicht auch joined  ist ;-)

#!/bin/bash
# meinscript.sh

ANZAHL=$(grep joined rust_logdatei.log)
if [ $ANZAHL -lt 20 ] ;
then
wipe-Kommando
fi

Das dann einmal starten, etwa so:

while true meinscript.sh; do ...

Allerdings würde mich interresieren wie man die Spielerzahl mittels SteamAPI / Steamcmd bekommen kann...

Dann stelle eine andere Frage, denn hier wolltest Du es in Bash!

Linuxhase

ninelore 
Beitragsersteller
 07.10.2017, 18:04
@Linuxhase

Das Problem ist das dann aber auch spieler mitgezählt werden, die schon wieder weg sind. Mir wäre letztere Option, die ich genannt hatte, lieber.

Linuxhase  07.10.2017, 18:31
@ninelore

@ninelore

Das Problem ist das dann aber auch spieler mitgezählt werden, die schon wieder weg sind

Dann kannst Du eine Anweisung angeben welche die joinded mit den left Zeilen abgleicht, etwa so:

let i=$ANZAHL-$LEFT

Dann kann das ganze so aussehen:

#!/bin/bash
# meinscript.sh

ANZAHL=$(grep joined rust_logdatei.log)
LEFT=$(grep left rust_logdatei.log)
let i=$ANZAHL-$LEFT

if [ $i -lt 20 ] ;
then
wipe-Kommando
fi

Linuxhase