Vollständige Version anzeigen : [Batch/Bash] Minecraft StartScript [start|stop|restart|attach|status]


Silthus
18.01.2011, 22:15

Hallo zusammen,

ich hab vorher aus Langeweile, weil die Server down sind :( mal nen kleines StartScript für Minecraft Server auf Linux geschrieben.

Features:

Individuelle Anpassung des Pfads und genutzten Minecraft Mod möglich
Start/Stop Funktion, wobei bei Stop eine Nachricht an den Server gesendet wird und die Welt gesaved wird
Restart Funktion, welche zwischen Shutdown und Neustart 10 Sekunden wartet, um den RAM zu leeren (ebenfalls mit Server Nachricht)
Attach Funktion, welche euren Server mit "screen -r" aufruft und es ermöglicht direkte Consolen Commands einzugeben
Status Funktion ermöglicht es den Server Status zu sehen (running or stopped)


ToDo:


RootUser Check anpassen, so dass auch mit Root switch user gestartet werden kann
Parameter anpassen, dass das Laden verschiedener Welten möglich ist


Um das Ganze beim Start des Server zu starten und alle 6 Stunden einen Restart zu machen wie folgt vorgehen:
Das ganze lässt sich via update-rc;d und /etc/init;d/ beim Server Start starten und per cronjob implementieren.
Für einen Server Restart alle sechs Stunden um 0, 6, 12 und 18 Uhr einfach folgenden Crontab mit dem User, welcher den Minecraft Server ausführt hinzufügen:

0 0,6,12,18 * * * /etc/init;d/minecraft restart

Davor natürlich das Script nach /etc/init;d/minecraft verschieben und umbennen oder crontab anpassen.

Hier das Minecraft StartScript by Silthus v1;0:

#!/bin/bash

### BEGIN INIT INFO
# Provides: Minecraft StartScript v1;0
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Starts the minecraft server
# Description: Starts the minecraft server specified below. You can also create a cron job to sceduele restarts of your minecraft server (recommended).
### END INIT INFO

########################
#
# Minecraft StartScript v1;0
# Copyright (C) 2011 by Silthus
#
#########################################


###################
# CONFIGURATION #
#########################################
# NAME: user to start Minecraft from (dont run as root (u wont be able to anyways!))
# PATH: directory containing the Minecraft Server File (= working directory) (needs / at the end)
# BIN: your server executable, e;g;: minecraft_server;jar
# ID: a unique identifier for this screen session (like servers name)
# must be different for every server
#
# To restart your server every 6 hours at midnight, 6, 12 and 6 o clock put this line in your crontab:
# # Minute Hour Day of Month Month Day of Week Command
# (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat)
# 0 0,6,12,18 * * * /etc/init;d/minecraft restart
#

NAME='minecraft'
PATH='/home/minecraft/bin/'
BIN='craftbukkit;jar'
ID='RaidCraft'
PARAMS='-Xms512M -Xmx2048M'


############################
# ADVANCED CONFIGURATION #
#########################################

# in case you have custom application paths, edit here
GREP='/bin/grep'
SCREEN='/usr/bin/screen'
JAVA='/usr/bin/java'
SLEEP='/bin/sleep'

# colors: default, red, green, yellow, blue
D='\E[0m'
R='\E[1;31m'
G='\E[1;32m'
Y='\E[1;33m'
B='\E[1;34m'


################################################
# do not edit below here #
# unless you REALLY know what you are doing !! #
################################################


echo -e "\E[1;34;40m Minecraft StartScript ${Y}v1;0 ${B}by ${G}Silthus${D}"

# check dependencies
if [ ! -x "$GREP" ]; then
echo -e "${R}Error: grep not found in ${B}'$GREP$'${D}"
echo -e "${Y}Install with your packet manager or edit advanced config!${D}"
exit 1
fi
if [ ! -x "$SCREEN" ]; then
echo -e "${R}Error: screen not found in ${B}'$SCREEN'${D}"
echo -e "${Y}Install with your packet manager or edit advanced config!${D}"
exit 1
fi
if [ ! -x "$JAVA" ]; then
echo -e "${R}Error: java not found in ${B}'$JAVA$'${D}"
echo -e "${Y}Install with your packet manager or edit advanced config!${D}"
exit 1
fi
if [ ! -x "$SLEEP" ]; then
echo -e "${R}Error: sleep not found in ${B}'$SLEEP$'${D}"
echo -e "${Y}Install with your packet manager or edit advanced config!${D}"
exit 1
fi

# check for root permission
if [ $UID = 0 ]; then
ROOT=true
echo -e "${R}Do not run as ROOT!${D}"
exit 1
else
ROOT=false
fi

cd $PATH


###############
# functions #
#########################################

start() {
echo -e "${Y}Starting ${B}$ID ${Y}..;${D}"

if status; then
echo -e "${R}Error: ${B}$ID ${R}is already running!${D}"
exit 1
fi
$SCREEN -AmdS $ID $JAVA $PARAMS -jar $BIN nogui
}

stop() {
echo -e "${Y}Stopping ${B}$ID ${Y}..;${D}"

if ! status; then
echo -e "${R}Error: ${B}$ID ${R}is not running!${D}"
exit 1
fi
$SCREEN -S $ID -p 0 -X stuff "`printf "say Going down in 10 seconds! Saving world..;\r"`"
echo -e "${B}Waiting 10 seconds for the World to save ..;${D}"
$SLEEP 5
$SCREEN -S $ID -p 0 -X stuff "`printf "save-all\r"`"
$SLEEP 5
$SCREEN -S $ID -p 0 -X stuff "`printf "stop\r"`"
echo -e "${G}Shutting down ..;${D}"
$SLEEP 2
}

status() {
$SCREEN -ls | $GREP [;]$ID[[:space:]] > /dev/null
}

attach() {
if ! status; then
echo -e "${R}Error: ${B}$ID ${R}is not running!${D}"
exit 1
fi
$SCREEN -S $ID -r
}


# parameter parsing
case "$1" in
start)
start
echo -e "${G} ... done;${D}"
;;

stop)
stop
echo -e "${G} ... done;${D}"
;;

restart)
status
$SCREEN -S $ID -p 0 -X stuff "`printf "say Restarting in 10 seconds! Saving world..;\r"`"
echo -e "${B}Waiting 10 seconds for the World to save ..;${D}"
$SLEEP 5
$SCREEN -S $ID -p 0 -X stuff "`printf "save-all\r"`"
$SLEEP 5
$SCREEN -S $ID -p 0 -X stuff "`printf "stop\r"`"
echo -e "${B}Waiting 10 seconds for the RAM to clear ..;${D}"
$SLEEP 10
start
;;

status)
if status; then
echo -e "${B}$ID ${G}is running ${B}${D}"
else
echo -e "${B}$ID ${R}is not running!${D}"
fi
;;

attach)
attach
;;

*)
echo -e "${Y}Usage: $0 {${G}start${Y}|${R}stop${Y}|${B}restart${Y}|${B}status${Y}|${B}attach${Y}} ${Y}[ID]${D}"
echo -e "${Y}While attached press ${B}ctrl-a crlt-d ${Y}to stop watching without stopping the server!"
exit 1
;;
esac


Download: minecraft~sh | ;;xup~in (;;;xup~in/dl,50811738/minecraft~sh/)

Sonstige Verbesserungs Vorschläge, Anregungen oder Wünsche sind immer gerne gesehen =)

Greez Silthus

Hardware Preisvergleich | Amazon Blitzangebote!

Videos zum Thema
Video Loading...
Fr4z0R
18.01.2011, 22:16

Du bist doch verrückt :D

B2t: Schön gemacht :)


Prrovoss
19.01.2011, 06:03

gibt es sowas auch für win server?^^


Silthus
19.01.2011, 14:30

gibt es sowas auch für win server?^^

Ob es direkt das selbe für Win Server gibt kann ich dir leider nicht sagen. Man kann es sicher irgendwie mit ner Batch Datei machen hab nur

1) kaum Ahnung von Batch
2) keinen Minecraft Server auf Windows

also kann ich dir da leider nicht weiterhelfen.


Prrovoss
19.01.2011, 14:46

Ob es direkt das selbe für Win Server gibt kann ich dir leider nicht sagen. Man kann es sicher irgendwie mit ner Batch Datei machen hab nur

1) kaum Ahnung von Batch
2) keinen Minecraft Server auf Windows

also kann ich dir da leider nicht weiterhelfen;



jo ich werd mir einfach ma die serverdateien von minecraft~net besorgen und ma testen. ma n bisschen rumgucken was man so mit nem minecraft server machen kann:D vllt ne kleine private spielrunde oder so^^


Chillikid
21.01.2011, 12:59

jo ich werd mir einfach ma die serverdateien von minecraft~net besorgen und ma testen. ma n bisschen rumgucken was man so mit nem minecraft server machen kann:D vllt ne kleine private spielrunde oder so^^

Klar geht das damit ;) Nen Kumpel und ich zocken immer auf 'nem eigenen Server, den ich lokal hoste. Musst halt eventuell den Port am Router freigeben, aber sonst funktioniert das ideal. Der Server hat ne GUI, allerdings kann man ihn natürlich auch ohne laufen lassen.


Ähnliche Themen zu [Batch/Bash] Minecraft StartScript [start|stop|restart|attach|status]
  • [Batch/Bash] Batch Programm zur automitischen erstellung von Ordnern
    Servus, Hab da ein Problem und bin etwas zu faul es manuell zu lösen. Habe heute einen Datenträger bekommen, auf diesem Datenträger sind ca. 20000 Dateien in einem einzigen Ordner gespeichert. Eine der Dateien sorgt zu einem Absturz des Windows Explorer. Bevor ich jetzt hingehe und die [...]

  • [Batch/Bash] kann mir einer ein batch machen die den explorer beendet und wieder startet??
    hi leutz habe ein problem mit meiner zwischenablage!! ich kann nach einer zeit nicht mehr hinein kopieren und das nervt!! als workaround hat sich ein schließen der explorer;exe une ein neues starten selbiger herausgestellt. da ich leider null ahnung von programmieren oder der gleichen habe wo [...]

  • [Batch/Bash] Batch-Befehle durch Batch in Batch schreiben lassen
    Ich liebe den Titel :D Ich habe folgendes Problem: Ich möchte per Batch ein paar Befehle in eine andere Batchdatei schrieben lassen. Ich hab mir das in etwa so vorgestellt. "echo "#######" " >> BatchNr2;bat Aber irgendwie bekomme ich dann eine leere Datei udn wenn ich so versuche: ech [...]

  • [Batch/Bash] Server-start.bat
    Abend die User weiss nicht recht ob ich hier richtig bin.... undzwar habe ich mir einen Windows Server 2008 aufgesetzt ( offline, da er daheim steht und zur Datensicherung dient ) und wollte fragen ob es möglich ist, denn nur hochfahren zu lassen wenn ich eine ;bat ausführe! Das der mir n [...]



raid-rush.ws | Imprint & Contact pr