aktion bei inaktivem minecraft-server
aktion bei inaktivem minecraft-server
ich will ein bash-script schreiben, dass eine aktion ausführt wenn ein minecraft-server nicht mehr genutzt wird ... Habt ihr ideen wie ich das überprüfen kann ? eventuell an den logs , wenn darin nichts mehr steht mit "joined the game" ? habe keine idee wie ich das technisch umsetzen kann.
Re: aktion bei inaktivem minecraft-server
Gibt es nicht sowas wie 'who' für den minecraft?
Oder eine Art profile.d/ für sich einloggende Benutzer?
Daraus könnte eine lock-Datei unterhalb eines Instanz-Verzeichnisses generiert werden,
beim Ausloggen wird die lock-Datei entfernt.
Ein incrond-Job prüft. ob keine lock-Dateien mehr existieren (entspricht keine Spieler) und löst die Aktion aus.
Oder eine Art profile.d/ für sich einloggende Benutzer?
Daraus könnte eine lock-Datei unterhalb eines Instanz-Verzeichnisses generiert werden,
beim Ausloggen wird die lock-Datei entfernt.
Ein incrond-Job prüft. ob keine lock-Dateien mehr existieren (entspricht keine Spieler) und löst die Aktion aus.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
- sbruder
- Beiträge: 333
- Registriert: 24.06.2016 13:54:36
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Franken
Re: aktion bei inaktivem minecraft-server
grad ein Shell-Script geschrieben:
Ich weiß jetzt nicht genau, wie die Syntax von Deinem Logfile ist, aber Du kannst ja die regexs anpassen. Ich sicher nicht das schönste Skript, sollte aber funktionieren.
Code: Alles auswählen
#!/bin/bash
if [[ -z $1 ]]; then
echo "Usage: $0 logfile"
fi
LOGFILE=$1
# Here, you can define the matching regex for the joins and lefts
JOINREGEX='^\[.*\]: .* joined the game$'
LEFTREGEX='^\[.*\]: .* left the game$'
grep='grep -E'
joins=$(cat $LOGFILE|$grep "$JOINREGEX"|wc -l)
lefts=$(cat $LOGFILE|$grep "$LEFTREGEX"|wc -l)
if [[ $joins == $lefts ]]; then
exit 0
else
echo "joins: $joins; lefts: $lefts"
exit 1
fi
Re: aktion bei inaktivem minecraft-server
Hallo OldGod78,
unabhaengig davon, wie der server gestartet wurde, koenntest Du auch mit mcrcon die Spielerzahl abfragen (mit dem Befehl "list").
viele Gruesse
Draal
@mcrcon
unabhaengig davon, wie der server gestartet wurde, koenntest Du auch mit mcrcon die Spielerzahl abfragen (mit dem Befehl "list").
viele Gruesse
Draal
@mcrcon
Re: aktion bei inaktivem minecraft-server
Unabhängig davon
Alternative minecraft <-> minetest? (jessie-backports 0.4.15 = current)
https://screenshots.debian.net/package/minetest + http://www.minetest.net/
Alternative minecraft <-> minetest? (jessie-backports 0.4.15 = current)
https://screenshots.debian.net/package/minetest + http://www.minetest.net/
Zuletzt geändert von rendegast am 09.02.2017 13:15:27, insgesamt 2-mal geändert.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: aktion bei inaktivem minecraft-server
Die Anwender werden sich über irgendwelche Sockets verbinden. Ohne aktive Verbindungen ist auch niemand online. Man könnte somit die Ausgabe von "netstat -an" auswerten.
Re: aktion bei inaktivem minecraft-server
danke aber woher weiß das script da wo es nach "joined the game" schaut ? und wie genau funktioniert es generell ?sbruder hat geschrieben:grad ein Shell-Script geschrieben:Ich weiß jetzt nicht genau, wie die Syntax von Deinem Logfile ist, aber Du kannst ja die regexs anpassen. Ich sicher nicht das schönste Skript, sollte aber funktionieren.Code: Alles auswählen
#!/bin/bash if [[ -z $1 ]]; then echo "Usage: $0 logfile" fi LOGFILE=$1 # Here, you can define the matching regex for the joins and lefts JOINREGEX='^\[.*\]: .* joined the game$' LEFTREGEX='^\[.*\]: .* left the game$' grep='grep -E' joins=$(cat $LOGFILE|$grep "$JOINREGEX"|wc -l) lefts=$(cat $LOGFILE|$grep "$LEFTREGEX"|wc -l) if [[ $joins == $lefts ]]; then exit 0 else echo "joins: $joins; lefts: $lefts" exit 1 fi
- sbruder
- Beiträge: 333
- Registriert: 24.06.2016 13:54:36
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Franken
Re: aktion bei inaktivem minecraft-server
Na aus $1/dem ersten Aufrufparamter. Funktionieren tut es indem es die Anzahl der Zeilen in denen die beiden Suchausdrücke vorkommen vergleicht und wenn sie gleich sind sich ohne Fehler beendet und wenn sie ungleich sind einen Fehler zurückgibt.OldGod78 hat geschrieben:danke aber woher weiß das script da wo es nach "joined the game" schaut ? und wie genau funktioniert es generell ?