Skip to content

Instantly share code, notes, and snippets.

@SoftCreatR
Forked from surtic86/minecraft
Last active May 18, 2019 14:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SoftCreatR/80e89ded130bc082b0a7abec4b6ab92a to your computer and use it in GitHub Desktop.
Save SoftCreatR/80e89ded130bc082b0a7abec4b6ab92a to your computer and use it in GitHub Desktop.
Minecraft Start / Stop / Update .... Script
#!/bin/bash
# /etc/init.d/minecraft
# Parameter
USERNAME='mcserver'
MCPATH='/home/mcserver/minecraft/'
BACKUPPATH='/opt/backup/'
RAM='7168M'
FILENAME='spigot-1.13.2.jar'
START="java -Xmx$RAM -Xms$RAM -jar $FILENAME"
SCREEN='minecraft'
COMMAND="$1"
PARAMETER="$@"
ME=`whoami`
DBUSER='bukkit'
DB='bukkit'
# Ausführen als Bennutzer
as_user() {
if [ "$ME" == "$USERNAME" ]
then
bash -c "$1"
else
su - $USERNAME -c "$1"
fi
}
# Server Starten
start() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Server läuft bereits'
else
echo 'Server wird gestartet'
as_user "cd $MCPATH && screen -dmS $SCREEN $START"
sleep 7
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Server läuft nun'
else
echo 'Server konnte nicht gestartet werden'
fi
fi
}
# Server Stopen
stop() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Der Server wird heruntergefahren'
if [ "$COMMAND" == 'stop' ]
then
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Server wird in 10 Sekunden heruntergefahren.\"\015'"
else
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Server wird in 10 Sekunden neu gestartet.\"\015'"
fi
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-all\"\015'"
sleep 10
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"stop\"\015'"
sleep 20
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Server konnte nicht heruntergefahren werden'
else
echo 'Server ist heruntergefahren'
fi
else
echo 'Der Server läuft nicht'
fi
}
# Server Backup
backup() {
echo "Backup vom Server wird gestartet."
if [ -d $BACKUPPATH/`date '+%Y-%m'` ]
then
echo ''
else
as_user "mkdir $BACKUPPATH/`date '+%Y-%m'`"
fi
if [ -f $BACKUPPATH`date '+%Y-%m'`/`date '+%d-%m-%Y'`.tar.gz ]
then
for i in 1 2 3 4 5 6 7 8 9 10 11 12
do
if [ -f $BACKUPPATH`date '+%Y-%m'`/`date '+%d-%m-%Y'`-$i.tar.gz ]
then
continue
else
sudo mysqldump --opt -u $DBUSER -p $DB > $MCPATH/backup.sql
as_user "cd $BACKUPPATH/`date '+%Y-%m'` && tar -czf `date "+%d-%m-%Y"`-$i.tar.gz $MCPATH"
break
fi
done
else
sudo mysqldump --opt -u $DBUSER -p $DB > $MCPATH/backup.sql
as_user "cd $BACKUPPATH/`date '+%Y-%m'` && tar -czf `date "+%d-%m-%Y"`.tar.gz $MCPATH"
echo "Backed up Minecraft"
fi
echo "Backup vom Server ist Fertig."
}
# Save OFF
saveoff() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Server wird gespeichert'
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Server wird gespeichert\"\015'"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-off\"\015'"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-all\"\015'"
sync
sleep 10
else
echo 'Server läuft nicht'
fi
}
# Save ON
saveon() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Server wurde gespeichert'
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-on\"\015'"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Server wurde gespeichert\"\015'"
else
echo 'Server läuft nicht'
fi
}
# Welt Speichern
save() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Welt wird gespeichert'
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Welt wird gespeichert...\"\015'"
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"save-all\"\015'"
sleep 5
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say Welt wurde gespeichert\"\015'"
else
echo 'Server läuft nicht'
fi
}
# Server Say
say() {
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo 'Nachricht gesendet'
# String Replace von "say"
MESSAGE=$(echo $PARAMETER|sed 's/say//g')
as_user "screen -p 0 -S $SCREEN -X eval 'stuff \"say $MESSAGE \"\015'"
else
echo 'Server läuft nicht'
fi
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
backup)
saveoff
backup
saveon
;;
save)
save
;;
say)
say
;;
status)
if ps ax | grep -v grep | grep -v -i SCREEN | grep $FILENAME > /dev/null
then
echo "Server läuft."
else
echo "Server läuft nicht."
fi
;;
*)
echo "Benutzung: service $0 {start|stop|restart|save|backup|say|status}"
exit 1
;;
esac
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment