Initial commit
This commit is contained in:
commit
ad70c7420c
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
__pycache__/
|
||||||
|
backup.log
|
9
README.md
Normal file
9
README.md
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
Various scripts to ease administration of play.geekify.de
|
||||||
|
|
||||||
|
Create a file named `CONFIG.py` containing your rcon credentials, example:
|
||||||
|
|
||||||
|
```
|
||||||
|
HOST="127.0.0.1"
|
||||||
|
PORT=25575
|
||||||
|
PW="supersecretpassword"
|
||||||
|
```
|
19
backup.sh
Executable file
19
backup.sh
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||||
|
filename="maps-$(date +%s).tar.gz"
|
||||||
|
(
|
||||||
|
echo "Starting backup at $(date) to $filename"
|
||||||
|
$DIR/backup_prepare.py
|
||||||
|
cd /opt/minecraft/server
|
||||||
|
tar -czf "../backups/$filename" world* || true 2>&1
|
||||||
|
size="$(du -h ../backups/$filename | awk '{ print $1 }')"
|
||||||
|
echo "Backup completed at $(date) with a size of $size"
|
||||||
|
$DIR/enable_autosave.py
|
||||||
|
echo "Backup done at $(date)!"
|
||||||
|
if [[ $1 == "--restart-after-backup" ]]; then
|
||||||
|
echo "Restart after backup was requested, initializing restart in 10 minutes"
|
||||||
|
$DIR/restart_server.py &
|
||||||
|
fi
|
||||||
|
) >> /opt/minecraft/tools/backup.log
|
||||||
|
echo $filename
|
19
backup_prepare.py
Executable file
19
backup_prepare.py
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import time
|
||||||
|
import sys
|
||||||
|
from mcrcon import MCRcon
|
||||||
|
from CONFIG import HOST,PW,PORT
|
||||||
|
|
||||||
|
flushed=False
|
||||||
|
with MCRcon(HOST, PW, port=PORT) as mcr:
|
||||||
|
resp = mcr.command("say BACKUP STARTED")
|
||||||
|
resp = mcr.command("save-off")
|
||||||
|
resp = mcr.command("save-all flush")
|
||||||
|
if "Saved the game" in resp:
|
||||||
|
flushed=True
|
||||||
|
print("Flushed map successfully. Don't forget to run enable_autosave.py after the map backup")
|
||||||
|
|
||||||
|
if flushed:
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
sys.exit(1)
|
3
cli.py
Executable file
3
cli.py
Executable file
|
@ -0,0 +1,3 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
from mcrcon import mcrcon_cli
|
||||||
|
mcrcon_cli()
|
19
enable_autosave.py
Executable file
19
enable_autosave.py
Executable file
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import time
|
||||||
|
import sys
|
||||||
|
from mcrcon import MCRcon
|
||||||
|
from CONFIG import HOST,PW,PORT
|
||||||
|
|
||||||
|
autosave_on=False
|
||||||
|
with MCRcon(HOST, PW, port=PORT) as mcr:
|
||||||
|
resp = mcr.command("save-on")
|
||||||
|
if "Automatic saving is now enabled" in resp:
|
||||||
|
autosave_on=True
|
||||||
|
resp = mcr.command("say BACKUP FINISHED")
|
||||||
|
|
||||||
|
if autosave_on:
|
||||||
|
print("Autosave successfuly enabled.")
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
print("Enabling autosave failed. Was it already turned on?")
|
||||||
|
sys.exit(1)
|
27
players.py
Executable file
27
players.py
Executable file
|
@ -0,0 +1,27 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import time
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
from mcrcon import MCRcon
|
||||||
|
import pdb
|
||||||
|
from CONFIG import HOST,PW,PORT
|
||||||
|
|
||||||
|
flushed=False
|
||||||
|
with MCRcon(HOST, PW, port=PORT) as mcr:
|
||||||
|
resp = mcr.command("list uuids")
|
||||||
|
resp = resp.split(":")
|
||||||
|
player_list = resp[1].strip().split(",")
|
||||||
|
player_list = list(map(lambda x: x.strip(), player_list))
|
||||||
|
|
||||||
|
count_regex = re.match("There are ([0-9]+) of a max of ([0-9]+) players online", resp[0])
|
||||||
|
num_players = count_regex.group(1)
|
||||||
|
max_players = count_regex.group(2)
|
||||||
|
print("Current # players:", num_players)
|
||||||
|
print("Max # players:", max_players)
|
||||||
|
print(player_list)
|
||||||
|
pdb.set_trace()
|
||||||
|
|
||||||
|
if flushed:
|
||||||
|
sys.exit(0)
|
||||||
|
else:
|
||||||
|
sys.exit(1)
|
25
restart_server.py
Executable file
25
restart_server.py
Executable file
|
@ -0,0 +1,25 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import time
|
||||||
|
import sys
|
||||||
|
import datetime
|
||||||
|
from mcrcon import MCRcon
|
||||||
|
from CONFIG import HOST,PW,PORT
|
||||||
|
|
||||||
|
autosave_on=False
|
||||||
|
with MCRcon(HOST, PW, port=PORT) as mcr:
|
||||||
|
current_time = datetime.datetime.now().strftime("%H:%M")
|
||||||
|
resp = mcr.command("say {}: Server will restart in §a10§f minutes".format(current_time))
|
||||||
|
time.sleep(30)
|
||||||
|
current_time = datetime.datetime.now().strftime("%H:%M")
|
||||||
|
resp = mcr.command("say {}: Server will restart in §e5§f minutes".format(current_time))
|
||||||
|
time.sleep(24)
|
||||||
|
current_time = datetime.datetime.now().strftime("%H:%M")
|
||||||
|
resp = mcr.command("say {}: Server will restart in §61§f minute".format(current_time))
|
||||||
|
time.sleep(5)
|
||||||
|
for i in range(10):
|
||||||
|
resp = mcr.command("say Server will restart in §4{}§f seconds".format(10-i))
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
resp = mcr.command("restart")
|
||||||
|
|
||||||
|
sys.exit(0)
|
Loading…
Reference in a new issue