Jak z mobilu kontrolovat selhání služeb serveru

16. března 2002

Pokud provozujete vlastní internetový server, může se vám hodit možnost zjistit pomocí mobilního telefonu, zda některé ze služeb, které server zajišťuje, neselhaly. Jednoduchým pokusem o navázání spojení na portu dané služby určíte, zda je na serveru daná služba k dispozici.

Je dobré si říci, že tímto způsobem zjistíte, že server na daném portu odpovídá. Nezjistíte ale, zda se chová korektně služba –  i tak to ale pro rychlou letmou kontrolu bohatě postačí. Podobnou aplikaci, která využívá zde popisovaný způsob ověření dostupnosti služby na serveru, si můžete vyzkoušet (je nutný prohlížeč wml stránek – Opera, WinWap, mobilní telefon s wapem, nebo emulátor).

Skript obsahuje jednu kartu, do které se v závislosti na nastavení proměnné addr vygeneruje buď formulář pro zadání adresy zjišťovaného serveru, nebo rovnou výsledek. Součástí formuláře je i pole pro možnost zadání vlastní služby – vlastního čísla portu. Skript lze volat i přímo se zadanými parametry adresy serveru a případně i vlastní služby. Adresu serveru je možné zadávat doménou nebo jako IP adresu.

Skript srvstat.php:

<?PHP
function lookup($hport,$comment,$who) {  // pro test navázání spojení se serverem na daném portu
  $fp = fsockopen($who, $hport, &$errno, &$errstr, 4); // pokus se otevřít socket
  if (!$fp) {
    $data = "$comment ($hport): -neodpov&#xED;d&#xE1;"; // nezadařilo se, služba nebo server neodpovídá
  }
  else {
    $data = "$comment ($hport): -aktivn&#xED;"; // služba je aktivní
    fclose($fp);
  }
  return $data;
}
header("Content-type: text/vnd.wap.wml"); // nutná hlavička WML dokumentu
?>
<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<template>
<do type="prev" label="Zp&#x011B;t"><prev/></do>
<do type="accept" label="Hlavn&#xED;"><go href="index.php"/></do>
</template>
<card id="srvstat" title="ServerStat">
<p>
<?PHP if (empty($addr)) { ?> // není-li zadaná adresa serveru, vygenerovat formulář pro její zadání
Adresa serveru <input type="text" name="addr" title="Adresa"/><br/>  // pole pro adresu serveru
Vlastn&#xED; slu&#x017E;ba <input type="text" name="myport" emptyok="true" title="Vlastn&#xED; port"/><br/> // pole pro volitelné zadání vlastní služby
<anchor>Spustit<go href="srvstat.php" method="get">
<postfield name="myport" value="$(myport)"/>
<postfield name="addr" value="$(addr)"/>
</go></anchor><br/>
<?PHP } else { // je-li zadána adresa serveru, projít postupně seznam služeb – otestovat odezvu serveru na ně
  echo StrToUpper($addr)."<br/><small>\n";
  echo lookup("80","HTTP","$addr")."<br/>\n";
  echo lookup("21","FTP","$addr")."<br/>\n";
  echo lookup("22","SSH","$addr")."<br/>\n";
  echo lookup("443","SSL","$addr")."<br/>\n";
  echo lookup("25","SMTP","$addr")."<br/>\n";
  echo lookup("110","POP3","$addr")."<br/>\n";
  echo lookup("143","IMAP4","$addr")."<br/>\n";
  echo lookup("139","NetBIOS","$addr")."<br/>\n";
  echo lookup("389","LDAP","$addr")."<br/>\n";
  echo lookup("23","Telnet","$addr")."<br/>\n";
  echo lookup("3306","MySQL","$addr")."<br/>\n";
  echo lookup("6667","IRC","$addr")."<br/>\n";
  if (trim($myport)<>"") // je-li zadána vlastní služba, otestovat ji také
    echo lookup($myport,"vlastn&#xED;","$addr")."<br/>\n";
  echo "</small>\n";
}
?>
</p>
</card>
</wml>

Příklad volání skriptu včetně zadání adresy zjišťovaného serveru:

srvsw.php?addr=www.ibm.com&myport=1024
srvsw.php?addr=212.47.7.203

Ve skutečném skriptu je nutné vynechat komentáře (neodpovídají syntaxi WML). Skript si můžete stáhnout (příponu src pak přepište na txt). Část vnořenou v odstavci karty lze vyjmout a po drobných úpravách (zj. formuláře) použít i ve skriptu běžné webové stránky ve formátu HTML.

Starší komentáře ke článku

Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *