Skip to content

Instantly share code, notes, and snippets.

@jdkeke142
Created December 28, 2017 20:43
Show Gist options
  • Save jdkeke142/04f312e01e76a6621685363b27d78639 to your computer and use it in GitHub Desktop.
Save jdkeke142/04f312e01e76a6621685363b27d78639 to your computer and use it in GitHub Desktop.
#!/bin/sh
### BEGIN INIT INFO
# Provides: minecraft1
# Required-Start: $remote_fs $local_fs
# Required-Stop: $remote_fs $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: minecraft1 script
# Description: For manage minecraft1
### END INIT INFO
#Chemin du serveur
MCPATH=/root/minecraft_servers/minecraft1/
TOBACKUPPATH=/root/minecraft_servers/minecraft1/world_storage
#Chemin des sauvegardes
BACKUPPATH="/root/minecraft_servers/minecraft_backups/minecraft1"
#Mondes à backup
BACKUPWORLDS="world"
SERVICE="minecraft1.jar";
#Ram MAX (en pourcentage)
#RAM="50"
#RAM_Xmn="22"
#RAM_Xss="1024"
RAM_XMX="15000"
RAM_XMS="8000"
WHOLEBACKUP="${BACKUPPATH}/server/"
WORLBACKUPPATH="${BACKUPPATH}/worlds/"
DATE=`date +%Y-%m-%d:%H:%M:%S`
#tmux session name (`basename \"$MCPATH\"` -> basedir's name)
session="`basename \"$MCPATH\"`"
#Declaration des couleurs
VERT="\\033[1;32m"
NORMAL="\\033[0;39m"
ROUGE="\\033[1;31m"
ROSE="\\033[1;35m"
BLEU="\\033[1;34m"
BLANC="\\033[0;02m"
BLANCLAIR="\\033[1;08m"
JAUNE="\\033[1;33m"
CYAN="\\033[1;36m"
#MAX_MEMORY=`free -m -t | grep "^Mem:" | awk '{print $2}'`;
#XMX=$(($MAX_MEMORY / 100 * $RAM ))
JAVA_COMMAND="java -Dfile.encoding=UTF8 ";
#JAVA_COMMAND=$JAVA_COMMAND"-Xmx"$XMX"m ";
#JAVA_COMMAND=$JAVA_COMMAND"-Xms"$XMX"m ";
JAVA_COMMAND=$JAVA_COMMAND"-Xmx"$RAM_XMX"M ";
JAVA_COMMAND=$JAVA_COMMAND"-Xms"$RAM_XMS"M ";
JAVA_COMMAND=$JAVA_COMMAND"-jar $SERVICE ";
INVOCATION=`echo $JAVA_COMMAND`
echo $MAX_MEMORY;
mc_world_backup() {
set -- $BACKUPWORLDS
while [ -n "$1" ]; do
if [ -d "$TOBACKUPPATH/$1" ]; then
echo "$VERT Sauvegarde de $1 dans $WORLBACKUPPATH $NORMAL"
mkdir -p $WORLBACKUPPATH/$1/
cd $TOBACKUPPATH/$1
tar -hcjf $1.tar *
mv $1.tar $WORLBACKUPPATH/$1/$DATE.tar
echo "$VERT Sauvegarde de $1 terminé $NORMAL"
else
echo "$ROUGE Il n'y aura pas de backup pour le monde: $1 car il n'existe pas... $NORMAL";
fi
shift
done
}
mc_whole_backup() {
echo -e "$VERT Sauvegarde entière du serveur dans $WHOLEBACKUP $NORMAL";
cd $MCPATH
tar cvf tempbackup.tar *
mkdir -p $WHOLEBACKUP/
mv tempbackup.tar $WHOLEBACKUP/$DATE.tar
}
status() {
tmux has-session -t $session
if [ "$?" -eq 1 ] ; then
echo "$ROUGE Le serveur n'est pas démarré. $NORMAL"
else
echo "$VERT Le serveur est démarré! $NORMAL"
fi
}
command() {
tmux has-session -t $session
if [ "$?" -eq 1 ] ; then
echo "$ROUGE Le serveur n'est pas démarré. $NORMAL"
else
command="$1";
echo "$command"
tmux send-keys -t $session:0 "$command" C-m
echo "$VERT Commande envoyée avec succés! $NORMAL"
fi
}
start() {
tmux has-session -t $session
if [ "$?" -eq 1 ] ; then
tmux new-session -d -s $session
echo "Démarrage du serveur...."
tmux send-keys -t $session:0 "cd $MCPATH" C-m
tmux send-keys -t $session:0 "$INVOCATION" C-m
echo "$VERT Le serveur est démarré, envoie vers la console $NORMAL"
sleep 0.5
tmux attach-session -t $session:0
else
echo "$ROUGE Le serveur est déjà démarré! $NORMAL"
fi
}
attach() {
tmux has-session -t $session
if [ "$?" -eq 1 ] ; then
echo "$ROUGE Le serveur n'est pas démarré. $NORMAL"
else
tmux attach -t $session
fi
}
mc_saveoff() {
tmux has-session -t $session
if [ "$?" -eq 1 ] ; then
echo -e "$VERT Le serveur n'est pas démarré. Pas de désactivation de sauvegardes automatiques. $NORMAL"
sync
sleep 10
else
echo -e "$VERT Le serveur est démarré. Désactivation des sauvegardes automatiques. $NORMAL"
tmux send-keys -t $session:0 "save-off" C-m
tmux send-keys -t $session:0 "save-all" C-m
fi
}
mc_saveon() {
tmux has-session -t $session
if [ "$?" -eq 1 ] ; then
echo -e "$ROUGE Le serveur n'est pas démarré. Pas de ré-activation des sauvegardes automatiques. $NORMAL"
else
echo -e "$VERT Le serveur est démarré. Ré-activation des sauvegardes automatiques. $NORMAL"
tmux send-keys -t $session:0 "save-on" C-m
fi
}
mc_command() {
command="$1";
if [ "$?" -eq 1 ] ; then
echo "$ROUGE Le serveur n'est pas démarré. $NORMAL"
else
tmux send-keys -t $session:0 "$command" C-m
echo "$VERT Commande envoyé avec succés. $NORMAL"
fi
}
stop() {
tmux has-session -t $session
if [ "$?" -eq 1 ] ; then
echo "$ROUGE Le serveur n'est pas démarré. $NORMAL"
else
tmux send-keys -t $session:0 "stop" C-m
echo "$VERT Arrêt du serveur... $NORMAL"
for i in {5..1..-1}
do
echo -ne "\r$JAUNE Attente de l'arrêt... $NORMAL $i"
sleep 1
done
tmux kill-session -t $session
echo "$VERT Serveur arrêté. $NORMAL"
fi
}
case "$1" in
hstart)
start
;;
hbackup)
tmux has-session -t $session
if [ "$?" -eq 1 ] ; then
mc_world_backup
else
tmux send-keys -t $session:0 "say Backup du serveur! Sauvegarde automatique OFF." C-m
mc_saveoff
mc_world_backup
mc_saveon
tmux send-keys -t $session:0 "say Backup du serveur terminé! Sauvegarde automatique ON." C-m
fi
;;
hstatus)
status
;;
hstop)
stop
;;
hwhole-backup)
tmux has-session -t $session
if [ "$?" -eq 1 ] ; then
mc_whole_backup
else
tmux send-keys -t $session:0 "say Une sauvegarde entière du serveur va avoir lieu, revenez dans 5 minutes!" C-m
sleep 10
stop
mc_whole_backup
start
fi
;;
hconsole)
attach
;;
hcommand)
if [ $# -gt 1 ] ; then
shift
mc_command "$*"
else
echo "$ROUGE Vous devez entrer une commande... $NORMAL"
fi
;;
hrestart)
stop
sleep 0.8
echo "$VERT Redémarrage du serveur... $NORMAL"
sleep 0.8
start
;;
*)
echo "$ROSE [Script du serveur HyperCraft]"
echo
echo "$ROSE Commandes:"
echo "$VERT hstart $CYAN == $JAUNE Démarrer le serveur."
echo "$VERT hstop $CYAN == $JAUNE Arrêter le serveur."
echo "$VERT hrestart $CYAN == $JAUNE Redémarrer le serveur."
echo "$VERT hconsole $CYAN == $JAUNE Afficher la console du serveur."
echo "$VERT hbackup $CYAN == $JAUNE Faire une sauvegarde des mondes spécifiés en config."
echo "$VERT hwhole-backup $CYAN == $JAUNE Faire une sauvegarde entière du serveur."
echo "$VERT hcommand $CYAN == $JAUNE Lancer une commande dans sur le serveur."
echo "$VERT hstatus $CYAN == $JAUNE Afficher le status du serveur. $NORMAL"
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment