Server Status Check

Hi , ist es auf ürgendeine Art möglich einen Serverstatus Check Script zu coden ohne fsockopen ?

Oder weiß jemmand wo es eines gibt welches auf einem andern server liegt und per Parameter aufruf den status zurück gibt?

Hi

Was soll dir denn das Script genau anzeigen? Ob der Server on ist? Tja, wenn nicht,
wird man es merken, weil dann ist deine Seite auch offline :wink:

Ich meine einen Status Check für GameServer und TS server^^

Also wenn du eine Game bzw TS Server auf deinem :bp: Account machen willst, kannst das sein lassen. Denn ist Verboten. Das würde den CPU viel zu viel belasten. Wenn du sowas aber in ein CMS einbinden willst, also unser TS ist Online / Offline.
Dann brauchst du da nur enstprechende Addons :wink:

@Scrappy: Das wird er ja meinen, nur diese Addons funkionieren vermutlich alle mit fsockopen. Und er fragtob es möglich ist sowas mit etwas anderem zu machen. Aber vllt wird ja fsockopen noch freigeschaltet…

Hi,

hm ich weiss nicht ob du dich in php etwas auskennst, aber sowas liesse sich recht einfach mit ping lösen.
also mal als minibeispiel:

[code]

<?php $ping = `ping 192.168.0.1`; echo "$ping"; echo PHP_OS; ?>[/code]

öh code nicht getestet, google eben mal nach ping und php
hab mir auf diese Weise ein kleines Netpingscript gebastelt damit ich die kinderrechner im blick habe (abends aus machen usw)
Gruss six

Also ich habs noch nicht Probiert, aber hier ein Codeschnipsel aus tutorials.de

[code]

<?php if ((isset($_POST['startping'])) && (!empty($_POST['host'])) && (!empty($_POST['port'])) && (!empty($_POST['numpings']))) { $host=$_POST['host']; $port=$_POST['port']; $numpings=$_POST['numpings']; for ($x=0;$x<$numpings;$x++) { $starttime=microtime(); $socket=@fsockopen($host,$port); $endtime=microtime(); if ($socket!=false) { fclose($socket); list($msec,$sec)=explode(" ",$starttime); $starttime=(float)$msec+(float)$sec; list($msec,$sec)=explode(" ",$endtime); $endtime=(float)$msec+(float)$sec; $pingtime=($endtime-$starttime)*1000; } else { $pingtime=-1; } if ($pingtime!=-1) { echo $host.' ('.$port.'): '.round($pingtime,2).' ms'; } else { echo 'Port '.$port.' could not be reached on '.$host.''; } flush(); } } ?> Host: Port: Pings: [/code]

Damit sollte es dann funktionieren. ich werds ausprobiern wenn ich wieder fitter bin

Mahlzeit,

Also Möglichkeiten gibt es viele für nen Ping :slight_smile: nur bei bplaced gibts aktuell keine, da alle dafür in Frage kommenden Funktionen disabled sind. Möglich wären, system();, fsockopen(); und fopen(); bzw cURL. Alle diese sind aber aus sicherheitstechnischen Gründen deaktiviert. Da man von bplaced aus nicht auf andere Server zu greifen darf/kann, bliebe nur noch die Möglichkeit das sich entsprechende System von selbst beim bplaced Space melden, was ich persönlich aber nicht raten möchte und es lediglich der Vollständigkeit halber erwähnt habe.
Der richtige Ping wäre:

Für Unix System:
system ("ping -c$count -w$count $host"); // $count Anz der Pakete, $host Ip oder Domain 
system("killall ping"); // beendet alle offenen pings
wenn man das ganze ohne Shellausgabe machen will, muss man es mit der Echo Methode machen die Six da schon angerissen hat
Für WindowsSystem:
system("ping -n $count $host");

dann fsockopen:

If ( @fsockopen( $host, $port, $errno, $errdesc, 5) ){
  echo "erreichbar";
}else{
  echo "nicht erreichbar";
}

zuletzt fopen:

If ( @fopen( $page, "r") ){
  echo "erreichbar";
}else{
  echo "nicht erreichbar";
}

das wären dann die 3 Möglichkeiten (ohne cURL), wie angesprochen funktioniert hier keine. Also vielleicht auf den Server auf dem TS etc laufen und per iframe einbinden, oder dergleichen.

Greez

Uhh, das wäre natürlich sogar die beste idee.

und Sorry das Ping nicht geht hab ich echt verbaselt

@kla_kal
Naja ein Formular braucht man ja bei sowas nicht :wink: nur wenn sich ständig IPś ändern die man anpingen möchte :wink:
Gruss Six

War ja auch nur ein Codeschnipsel und ich hab nen net mal genau angeschaut…

Ach ja fopen wird aktviert sobald miro wieder etwas mehr zeit hat, in einem anderen Thread hat er was gsagt von frühestens in 1,5 wochen

Den Pink könnte man mit Javaskript und Requests lösen:


function check_online()
{
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		try {
			request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}

	if (!request) {
		alert("Kann keine XMLHTTP-Instanz erzeugen");
		return false;
	} else {
		request.open("post", "HIER DIE URL", true);
		request.send(null);
		request.onreadystatechange = interpretRequest;
	}
}

function interpretRequest()
{
	if (request.readyState == 4)
	{
		if(request.status == 200)
			document.getElementById("HIER EIN DIV-NAME").innerHTML = "ONLINE!";
		else
			document.getElementById("HIER EIN DIV-NAME").innerHTML = "OFFLINE!";
	}
}

Das ganze ohne gewähr, sollte aber funktionieren
start einfach mit

Alles was groß geschrieben ist, muss noch verändert werden…