Gameserver Status Skript

  • Guten Tag,

    auf meinem vServer habe ich einen Gameserver (HL1) laufen. Gestartet wird das ganze über ein Startskript. Über den Startparameter "-autoupdate" startet sich der Gameserver von selbst neu, falls er mal abstürzen sollte.

    Das Problem ist jedoch, dass der Server sich ab und zu aufhängt (schlechte Maps, schlecht gecodete Plugins etc.). Bei diesem Aufhängen startet der sich der Gameserver nicht neu :(

    Daher habe ich mir überlegt ein kleines Statusskript zu schreiben, welches jede Minute via cron den Gameserver anpingt. Mein Problem ist nun: Wie kann ich einen bestimmten Port überprüfen (oder anpingen)?

  • Sehr einfache Lösung:

    Sprache PHP:
    1) Versuchen einen fsocket zu öffnen.
    2) Beim Fehlschlagen:
    2a) Eine Email losjagen
    2b) per shell_exec den Server neustarten

    Total easy, 10 Zeilen Code ;)


    (Natürlich muss shell_exec in der php.ini für die CLI erlaubt sein)

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Danke für die schnelle Hilfe. Habe leider vergessen zu erwähnen, dass ich keine weiteren Anwendungen/Serverdienste installiert habe.

    Somit fällt die PHP Lösung weg. Gibt es die fsocket Funktion auch für die bash?

  • Hängt er sich dann wirklich auf oder stürzt er ganz ab? Falls er abstürzt brauchst du nur die PID Datei (hat normalerweise jede Software) einzulesen, schauen ob der Prozess noch läuft und ansonsten neu starten. Dafür könntest du z.B. dieses Startscript für sBNC nehmen und abändern. Falls er sich aufhängt nimm z.B. ein PHP-Script (php-cli) und überprüfe den Port mit fsockopen() :)

    Update: Ups, war wohl zu langsam. Das kommt davon, wenn man nebenbei chattet :D

    Übrigens: php-cli zu installieren wäre jetzt auch nicht so schlimm, das ist rein der Scriptinterpreter für die Kommandozeile ;)


    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Zitat

    Somit fällt die PHP Lösung weg

    Tja, wenn du PHP nicht installieren willst (warum auch immer, es kostet schließlich genau nichts bis auf die paar kB Platte), dann kann ich dir auch nicht helfen ;)

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Danke für die schnellen Antworten.

    Das verwendete Startskript hat eine Status-Prüfung über die PID, ob der Server komplett weg ist. Dies ist bei manchen Fehlern jedoch nicht der Fall. Daher muss ein weiterer Statuscheck über den Port erfolgen.

    So wie es aussieht werde ich wohl nicht um PHP herumkommen.

    Da ich damit jedoch noch nicht sehr viel Erfahrung habe werde ich mich da erst einlesen müssen.

    Danke für eure Hilfe :)

    Edit: Ist schon spät...da ergeben nicht alle Sätze einen Sinn

  • Naja, mit PHP muss man nicht viel Erfahrung haben. Es ist eine Sprache wie Perl und Bash-Batches auch.

    Was mir gerade einfällt: Du meinst aber nicht, dass du, weil du keinen Webserver hast, kein PHP verwenden kannst, oder? :D

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Soo, mir war langweilig.
    Hier ist das fertige Script:

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • /usr/bin/php /[scriptpfad]/[Script].php
    So in etwa?

    Man kann natürlich auch eine "#!/bin/php" einfügen und das Teil ausführbar machen. Aber ich finde das so einfacher.

    Mein Server:
    v(olks)Server 1. Serie: 2,5GHz, 1024MB RAM, 1024MB Swap, 2x60GB-Raid1-HDD, Traffic-Flat
    Node:
    78.46.117.9x | hos-tr2.ex3k4.rz7.hetzner.de

  • Zitat von Artimis;19060

    Man kann natürlich auch eine "#!/bin/php" einfügen und das Teil ausführbar machen.


    Wenn schon, dann bitte den richtigen Pfad zu PHP :D
    [PHP]#!/usr/bin/php
    <?php

    // Code
    // [...]

    ?>[/PHP]


    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)