Automatisches Startscript

  • Hallo Leute,


    ich suche ein automatisches Startscript, dass ich mittels crontab alle 5 Minuten aufrufen kann und den Status meiner 2 CSS Server abruft und diese dann startet, wenn sie Online sind. Im Moment benutze ich das srcds Startscript von counter-strike.de um die Gameserver zu starten oder zu stoppen. Vielleicht kann man das damit verbinden. Leider bin ich in Bash/Shell nicht so bewandert und richte mich mit diesem Problem an euch.

  • @tobi: Son Startscript hab ich ja schon nur such ich jetzt ein Script, dass den aktuellen Status abruft des Servers und dann den Server startet, wenn er Offline ist.


    rAdiuM: -autoupdate bringt leider auch nichts wenn der Root für kurze Zeit mal Offline geht, aus welchen Gründen auch immer. Möchte es ja dann so haben das der Server immer automatisch startet, egal wie er offline gegangen ist.

  • [quote='frAxX']@tobi: Son Startscript hab ich ja schon nur such ich jetzt ein Script, dass den aktuellen Status abruft des Servers und dann den Server startet, wenn er Offline ist.


    Einfach die Prozess ID abrufen ob noch vorhanden... Prozess ID speicherst einfach beim starten (also im Startscript erkränzen) in eine txt. als Beispiel.
    Und lässt das dann alle x sek/min/st/ überprüfen. Das wäre ein Weg von vielen.

  • Das Restartscript von dieser Seite überprüft vor dem start nicht, ob der screen bereits vorhanden ist.
    Man könnte dies noch erweitern:

    Code
    start)
       screen -ls | awk '{print $1}' | grep -q $NAME$ && echo "Server is running" && exit
       echo "Starting: $NAME"
       if [ -e $DIR ];
       then
        cd $DIR
       screen -d -m -S $NAME ./$DAEMON
       else echo "No such directory: $DIR!"
       fi
       ;;


    Die erste Zeile gibt eine Liste der laufenden Screens aus, awk gibt die erste Spalte an grep weiter und grep sucht nach dem Text. Das Dollarzeichen nach der Variable signalisiert, dass es sich hier um das Ende der Zeile handelt. Die Ausgabe von grep wird mittels -q unterbunden. Bei Erfolg wird ein Text mittels echo ausgegeben und das script wir mittels exit vorzeitig beendet. Wird der screen nicht gefunden, läuft das Script normal weiter und startet den Server.


    Hier habe ich noch ein Script, welches auf Config-Dateien basiert:
    http://sourceserver.info/wiki/…alone/start-script.tar.gz


    Du richtest dann für jeden Server eine cfg-Datei ein. Im Archiv sind schon zwei Beispiele.
    Danach testest du das Script ausgiebig mit deinem Server (kann ja sein, dass vielleicht noch ein Fehler drin ist) und danach erstellst du mehrere cronjobs.


    Das sieht dann so aus:


    Code
    */5 * * * * /home/pfad/zum/restartscript/run.sh start gungame > /dev/null
    */5 * * * * /home/pfad/zum/restartscript/run.sh start server1 > /dev/null
    */5 * * * * /home/pfad/zum/restartscript/run.sh start server2 > /dev/null
    */5 * * * * /home/pfad/zum/restartscript/run.sh start warserver1 > /dev/null
    */5 * * * * /home/pfad/zum/restartscript/run.sh start warserver2 > /dev/null
    */5 * * * * /home/pfad/zum/restartscript/run.sh start warserver3 > /dev/null
    */5 * * * * /home/pfad/zum/restartscript/run.sh start l4d > /dev/null


    Zuerst logst du dich mit dem User ein, der auch die Server startet.
    Das kannst du in einer Textdatei speichern oder mit "crontab -e" direkt bearbeiten. Du kannst natürlich auch deinen Lieblingseditor dafür nehmen, dies in einer Textdatei speichern und den crontab dann mit

    Code
    crontab name_der_textdatei

    hinzufügen. Wichtig ist, dass die letzte Zeile leer ist, da ansonsten die Cronjobs nicht abgearbeitet werden.


    Mein Script überprüft ob der Screen bereits vorhanden ist. Sind mehrere Screens vorhanden, welche den gleichen Anfang besitzen (warserver, warserver1, warserver2), wird trotzdem richtig unterschieden. Es wird aber nicht überprüft ob der Server erreichbar ist oder ob der Prozess hängen geblieben ist. Das Startscript gibt eine Meldung heraus, dass der Server läuft. Damit deine Logdateien nicht zugemüllt werden, kannst du die Ausgabe mittels "> /dev/null" unterbinden.


    EDIT: Ich habe vorhin mal angefangen einen Artikel über den automatischen neustart der Gameserver zu schreiben. Das bezieht sich zwar nicht ganz auf das Thema aber vielleicht hilft es dir weiter: http://sourceserver.info/wiki/…bs_neustarten_root-server
    Der Artikel ist aber noch nicht ganz fertig.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!