Initial commit
This commit is contained in:
45
readme.md
Executable file
45
readme.md
Executable file
@ -0,0 +1,45 @@
|
||||
# Auto Shutdown
|
||||
|
||||
Fährt den Minecraft Server automatisch nach 14 Tagen leerlauf herunter.
|
||||
|
||||
* lp_stamp: Timestamp an dem das letzte mal ein Spieler gesehen wurde
|
||||
* lp_shutdown: Flag die dem Serverskript mitteilt, warum der Server heruntergefahren wurde
|
||||
* 0: Normaler täglicher Shutdown, bzw. unerwarteter Shutdown -> automatischer Neustart
|
||||
* 1: Shutdown wegen leerstand -> kein automatischer Neustart, warten auf Verbindung
|
||||
|
||||
## Erkennung einer Minecraft Verbindung
|
||||
|
||||
Theoretisch könnte man mit `nc -l 25500 -c :`, aber dadurch startet sich der Server durch *jede* Verbindung.
|
||||
|
||||
Besser ist es, wenn man sich das Packet vorher anschaut, und nur den Server neu startet, wenn wirklich jemand in Minecraft sich versucht zu verbinden.
|
||||
|
||||
Das Packet sieht (zumindest mit Valhelsia) ungefähr so aus:
|
||||
|
||||
* Automatischer Verbindungstest von Minecraft wenn man das Multiplayer Menu öffnet:
|
||||
```
|
||||
^X^@M-r^E^Q[SERVERNAME]^@FML2^@cM-^\^A^A^@
|
||||
```
|
||||
|
||||
* Wenn man auf "Connect" klickt:
|
||||
```
|
||||
^X^@M-r^E^Q[SERVERNAME]^@FML2^@cM-^\^B
|
||||
^@^H[SPIELERNAME]
|
||||
```
|
||||
|
||||
Auf eine legitime Verbindung zu warten kann dann z.B. so aussehen:
|
||||
```bash
|
||||
mcconn=0
|
||||
until [ $mcconn -ne 0 ]; do
|
||||
mcconn=$(nc -l 25500 | cat -v | grep -cF '^@cM-^\^B')
|
||||
if [ $mcconn -eq 0 ]; then
|
||||
echo "Something connected, but it doesn't look like a minecraft connection"
|
||||
else
|
||||
echo "Someone tried to connect to the minecraft server, starting..."
|
||||
fi
|
||||
done
|
||||
```
|
||||
|
||||
Ein vollständigeres Regex, dass auf eine korrekte Verbindung prüft sieht so aus, doch leider scheint das nicht in grep zu funktionieren:
|
||||
```regex
|
||||
^\^X\^@M-r\^E\^Q[a-zA-Z0-9\.]+\^@[a-zA-Z0-9]+\^@cM-\^\\\^B\n\^@\^H[a-zA-Z0-9]+
|
||||
```
|
||||
Reference in New Issue
Block a user