Script zur Anzeige von Serverstatus auf Webseite

LeCram

Ensign
Registriert
Juli 2010
Beiträge
190
Hallo zusammen,
in der Hoffnung, dass ihr mit weiterhelfen könnt, folgende Frage:
Ich habe bei mir zuhause einen Computer stehen, welcher auch als Host für eine Minecraft-Map und eine TS3-Server dient. Erreichbar ist das ganze über einen Nameserver und DynDns auf meiner eigenen Domain.
Nun würde ich gerne zusätzlich auf der Domain (Wordpress) eine Funktion einbauen, die es mir erlaubt den Online-Status des Servers anzuzeigen. Im simpelsten Falle einfach nur durch einen kleinen Button auf einer der Wordpress Seiten, welcher zwischen grüner und roter Farbe wechselt, je nachdem, ob der Server online ist, oder nicht. Überlegt hatte ich mir, dass ja evtl. ein .php Script durch SSH-Anfragen an den Server dessen Status überwacht. Entweder die Anfragen kommen an, dann ist der Server offenbar online, oder die Anfragen laufen ins Leere und der Serverstatus wird als Offline angezeigt.
Leider habe ich jedoch keine Scripting-Kentnisse in dieser Richtung und weiß sowieso nicht, ob das überhaupt so umsetzbar ist.
Könnt ihr mir damit weiterhelfen?

Vielen Dank im Voraus,
Marcel
 
Moin,

für dein vorhaben sollte ein einfacher Ping doch genügen? Pingbar grün, nicht pingbar rot?

Peace
 
Da ist natürlich was dran!
Was wäre also, wenn man dann einfach in regelmäßigen Abständen einen Ping auf den Minecraft-Server durchführt?
Folgende Idee:
Per Script/Cron wird alle 60 oder so Sekunden ein Ping auf den Minecraft-server durchgeführt. Das Ergebnis (on/off) wird in eine .txt geschrieben.
Ruft nun jemand die entsprechende Webseite auf, um sich den Onlinestatus anzeigen zu lassen, gibt diese dann eine Anzeige aus, entsprechend des Inhalts der .txt-Datei.

Machbar? Wie müsste das entsprechende Script aussehen?
 
Machbar? Wie müsste das entsprechende Script aussehen?
Klar ist auch das möglich einfach mit if und else sollte nicht all zu schwer sein.
 
So, ich hab mal versucht, was zu basteln und dabei ist folgendes rumgekommen:

Code:
<?php
$dyntxt="status.txt";
$time=time();
$a=fopen($dyntxt, "w");
$zeile = fgets($a,1024);
$array = explode( ";", $zeile);
$old = $array[0];
print_r($array[0]);
if ((time-30)<$old)
{
	if ($array[1]="0")
	{
		echo "<font color='red'><strong>Offline!</strong></font>";		
	} else {
		echo "<font color='green'><strong>Online!</strong></font>";		
	}	
} else {
	if (!$socket=@fsockopen("minecraft.mdahm.eu:25566",80,$errno, $errstr, 30))
	{
		fwrite($a, $time.";"."1");
		echo "<font color='green'><strong>Online!</strong></font>";		
	} else {
		fwrite($a, $time.";"."0");
		echo "<font color='red'><strong>Offline!</strong></font>";		
	}
}
fclose($a);
?>

Der Plan ist jetzt:
Das Script wird ausgeführt bei Seitenaufruf. Es holt sich den Timestamp der Domain und gleicht diesen mit der status.txt ab. Ist der Timestamp um 30 größer, wird ein Ping durchgeführt, ein Echo ausgegeben und das Ergebnis des Pings zusammen mit dem Timestamp in die status.txt geschrieben.
Ist die Differenz zwischen der Zeit in der status.txt und dem neuen Teimestamp kleiner als 30 Sekunden wird kein neuer Ping ausgeführt und einfach nur der Status aus der status.txt ausgelesen und als echo angegeben.
Was meint ihr dazu?

Grüße,
Marcel
Ergänzung ()

Hab es geschafft!
Folgender Code vergleicht den Zeitstempel der letzten Aktualisierung mit der aktuellen Zeit. Sind mindestens 30 Sekunden seit der letzten Aktualisierung verstrichen, wird ein Ping ausgeführt, der Onlinestatus ausgegeben und zusammen mit dem Zeitstempel in die Datei status.txt geschrieben. Sind weniger als 30 Sekunden vergangen, wird nur das Ergebnis der letzten aktualisierung aus der status.txt ausgelesen und ausgegeben.
In beiden Fällen wird ausserdem noch ein kleiner Text angezeigt, welcher die Dauer bis zur nächsten Aktualisierung angibt!

Code der Datei index.php
Code:
<?php
$dyntxt="status.txt";
$time=time();
$a=fopen($dyntxt, "r");
$zeile = fgets($a);
fclose($a);
$array = explode( ";", $zeile);
$dif = (30 - ($time-$array[0]));
if (($array[0] + 30) > $time)
{
	if ($array[1]=1)
	{
		echo "<font color='green'><strong>Online!</strong></font>"."<br />"."Nächste Aktualisierung in ".$dif." Sekunden möglich!";		
	} else {
		echo "<font color='red'><strong>Offline!</strong></font>"."<br />"."Nächste Aktualisierung in ".$dif." Sekunden möglich!";		
	}	
} else {
	$a=fopen($dyntxt, "w");
	if ($socket=fsockopen("<Meine IP>", <Port>, $errno, $errstr, 30))
	{
		fwrite($a, $time.";"."1");
		echo "<font color='green'><strong>Online!</strong></font>"."<br />"."Nächste Aktualisierung in 30 Sekunden möglich!";
		
	} else {
		fwrite($a, $time.";"."0");
		echo "<font color='red'><strong>Offline!</strong></font>"."<br />"."Nächste Aktualisierung in 30 Sekunden möglich!";		
	}
	fclose($a);
}
?>

Ausgabe:
Online!
Nächste Aktualisierung in 25 Sekunden möglich!
 
Zuletzt bearbeitet: (Code-Korrektur)

Ähnliche Themen

Zurück
Oben