Last active
August 29, 2015 14:09
-
-
Save bennet0496/6380ae36f2a54e570e70 to your computer and use it in GitHub Desktop.
Minecraft Server Wrapper
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
FTPSERVER1="ftp1.example.com" | |
FTPSERVER2="ftp2.example.com" | |
USER1="user" | |
USER2="user" | |
PASSWORD1="password" | |
PASSWORD2="password" | |
test -d $HOME/$1 || exit 1 | |
DATE=$(date +%F-%H-%M-%S) | |
cd $HOME/ | |
tar -czf /tmp/minecraft.$1.$DATE.tgz $1 | |
wput -q /tmp/minecraft.$1.$DATE.tgz ftp://$USER1:$PASSWORD1@$FTPSERVER/minecraft/ | |
wput -q /tmp/minecraft.$1.$DATE.tgz ftp://$USER2:$PASSWORD2@$FTPSERVER/minecraft/ | |
rm /tmp/minecraft.$1.$DATE.tgz |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# /etc/init.d/minecraft | |
# version 0.3.9 2012-08-13 (YYYY-MM-DD) | |
### BEGIN INIT INFO | |
# Provides: minecraft | |
# Required-Start: $local_fs $remote_fs screen-cleanup | |
# Required-Stop: $local_fs $remote_fs | |
# Should-Start: $network | |
# Should-Stop: $network | |
# Default-Start: 2 3 4 5 | |
# Default-Stop: 0 1 6 | |
# Short-Description: Minecraft server | |
# Description: Starts the minecraft server | |
### END INIT INFO | |
#Settings | |
SERVICE='mcpc-craftbukkit.jar' | |
OPTIONS='nogui' | |
USERNAME='minecraft' | |
WORLD='world' | |
MCPATH='/ghome/minecraft/technicpack' | |
MAXHEAP=6144 | |
MINHEAP=2048 | |
HISTORY=99999999 | |
CPU_COUNT=2 | |
INVOCATION="java -Xmx${MAXHEAP}M -Xms${MINHEAP}M -XX:+UseConcMarkSweepGC \ | |
-XX:+CMSIncrementalPacing -XX:ParallelGCThreads=$CPU_COUNT -XX:+AggressiveOpts \ | |
-jar $SERVICE $OPTIONS" | |
ME=`whoami` | |
as_user() { | |
if [ $ME == $USERNAME ] ; then | |
bash -c "$1" | |
else | |
su - $USERNAME -c "$1" | |
fi | |
} | |
mc_start() { | |
if pgrep -u $USERNAME -f $SERVICE > /dev/null | |
then | |
echo "$SERVICE is already running!" | |
else | |
echo "Starting $SERVICE..." | |
cd $MCPATH | |
as_user "cd $MCPATH && screen -dmS minecraft_main $INVOCATION" | |
sleep 7 | |
if pgrep -u $USERNAME -f $SERVICE > /dev/null | |
then | |
echo "$SERVICE is now running." | |
else | |
echo "Error! Could not start $SERVICE!" | |
fi | |
fi | |
} | |
mc_saveoff() { | |
if pgrep -u $USERNAME -f $SERVICE > /dev/null | |
then | |
echo "$SERVICE is running... suspending saves" | |
as_user "screen -p 0 -S minecraft_main -X eval 'stuff \"say SERVER BACKUP ST ARTING. Server going readonly...\"\015'" | |
as_user "screen -p 0 -S minecraft_main -X eval 'stuff \"save-off\"\015'" | |
as_user "screen -p 0 -S minecraft_main -X eval 'stuff \"save-all\"\015'" | |
sync | |
sleep 10 | |
else | |
echo "$SERVICE is not running. Not suspending saves." | |
fi | |
} | |
mc_saveon() { | |
if pgrep -u $USERNAME -f $SERVICE > /dev/null | |
then | |
echo "$SERVICE is running... re-enabling saves" | |
as_user "screen -p 0 -S minecraft_main -X eval 'stuff \"save-on\"\015'" | |
as_user "screen -p 0 -S minecraft_main -X eval 'stuff \"say SERVER BACKUP EN DED. Server going read-write...\"\015'" | |
else | |
echo "$SERVICE is not running. Not resuming saves." | |
fi | |
} | |
mc_stop() { | |
if pgrep -u $USERNAME -f $SERVICE > /dev/null | |
then | |
echo "Stopping $SERVICE" | |
as_user "screen -p 0 -S minecraft_main -X eval 'stuff \"say SERVER SHUTTING DOWN IN 10 SECONDS. Saving map...\"\015'" | |
as_user "screen -p 0 -S minecraft_main -X eval 'stuff \"save-all\"\015'" | |
sleep 10 | |
as_user "screen -p 0 -S minecraft_main -X eval 'stuff \"stop\"\015'" | |
sleep 7s | |
else | |
echo "$SERVICE was not running." | |
fi | |
if pgrep -u $USERNAME -f $SERVICE > /dev/null | |
then | |
echo "Error! $SERVICE could not be stopped." | |
else | |
echo "$SERVICE is stopped." | |
fi | |
} | |
mc_command() { | |
command="$1"; | |
if pgrep -u $USERNAME -f $SERVICE > /dev/null | |
then | |
pre_log_len=`wc -l "$MCPATH/server.log" | awk '{print $1}'` | |
echo "$SERVICE is running... executing command" | |
as_user "screen -p 0 -S minecraft_main -X eval 'stuff \"$command\"\015'" | |
sleep .1 # assumes that the command will run and print to the log file in le ss than .1 seconds | |
# print output | |
tail -n $[`wc -l "$MCPATH/server.log" | awk '{print $1}'`-$pre_log_len] "$MC PATH/server.log" | |
fi | |
} | |
#Start-Stop here | |
case "$1" in | |
start) | |
mc_start | |
;; | |
stop) | |
mc_stop | |
;; | |
restart) | |
mc_stop | |
mc_start | |
;; | |
status) | |
if pgrep -u $USERNAME -f $SERVICE > /dev/null | |
then | |
echo "$SERVICE is running." | |
else | |
echo "$SERVICE is not running." | |
fi | |
;; | |
command) | |
if [ $# -gt 1 ]; then | |
shift | |
mc_command "$*" | |
else | |
echo "Must specify server command (try 'help'?)" | |
fi | |
;; | |
*) | |
echo "Usage: $0 {start|stop|update|backup|status|restart|command \"server comm and\"}" | |
exit 1 | |
;; | |
esac | |
exit 0 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment