First commit

Ensure running and autoshutdown scripts
This commit is contained in:
2020-07-04 21:23:36 +00:00
commit 2c985cc150
4 changed files with 85 additions and 0 deletions

79
autoshutdown.sh Executable file
View File

@@ -0,0 +1,79 @@
#!/bin/sh
# If exists tmux session
# If Responds to queries
SERVER_DIR='/home/ubuntu/minecraft/servers/kincls'
TMUX_NAME='minecraft kincls server'
EMPTY_COUNTER="$SERVER_DIR/empty_counter.txt"
json_parse() {
cat - | python3 -c "import sys, json; print(json.load(sys.stdin)['$1'])"
}
silent_exitcode() {
$* > /dev/null 2>&1
}
empty_count() {
if [ ! -f "$EMPTY_COUNTER" ]; then
# File not existing
echo "0"
else
cat "$EMPTY_COUNTER"
fi
}
empty_incr() {
c="$(empty_count)"
if [ "$c" -gt 10 ]; then
echo "Server empty for more than 10 minutes, shutting down"
empty_reset # Needs to be 0 next time server starts
tmux send-keys -t "$TMUX_NAME.0" "stop" ENTER
sleep 5
$(sudo /sbin/shutdown -P +1)
else
echo "Empty count $c. Incrementing"
echo "$((c+1))" > "$EMPTY_COUNTER"
fi
}
empty_reset() {
echo "Resetting empty counter"
echo 0 > "$EMPTY_COUNTER"
}
tmux_running() {
tmux ls -F "#{session_name}" | grep -q "$TMUX_NAME"
}
server_responsive() {
silent_exitcode mcstatus localhost ping
}
n_logins="$(w -h | wc -l)"
echo "$(date) [$n_logins logins]"
if tmux_running; then
: #echo "Tmux running"
else
echo "Tmux not running"
empty_incr
exit 1
fi
if server_responsive; then
n_players=$(mcstatus localhost json | json_parse player_count)
echo "Server responsive. $n_players players online"
if [ "$n_players" -gt 0 ] || [ "$n_logins" -gt 0 ]; then
# Keep alive if players or ssh sessions active
empty_reset
else
empty_incr
exit 1
fi
else
echo "Server unresponsive"
empty_incr
exit 1
fi