Pagina 1 din 1

Scanare ip:port cu fsockopen() sau altceva

Scris: Mar Mai 01, 2012
de Cezar
Salutare tuturor! Revin dupa o lunga absenta pe acest forum cu urmatoarea rugaminte:

Am facut o pagina in php pentru a testa un numar de 23 de modemuri, daca sunt online sau nu. Verificand portul 80 la ip-ul(static) fiecarui modem, conf. scriptului de mai jos, totul este ok.
Pe fiecare modem am "port forward" catre portul 7070 unde se afla instalat un dvr(sistem de supraveghere video) cu toate setarile (ip, mask, getway) facute ok. Accesat in browser ip:port acesta functioneaza ok.
Am incercat pe principiul scriptului de mai jos sa testez si portul 7070 (in loc de 80) pentru a vedea cand acest echipament este functional si cand nu. Orice incercare imi afiseaza ca portul este inchis. Nu-mi dau seama daca gresesc undeva sau nu aceasta este metoda.

De exemplu pe acesta pagina ( www.yougetsignal.com/tools/open-ports/ ) verificarea este corecta. Daca dvr-ul functioneaza corect, la verificarea ip:port raspunde ca portul este deschis, daca opresc dvr-ul sau il declupez din cablu raspunsul este port inchis.
Din pacate nu stiu cum testeaza ei porturile. Va rog daca stie cineva cum port rezolva acesta problema va multumesc mult.

Cod: Selectaţi tot

<?php 
/* suprima afisarea in pagina a erorilor */
error_reporting("E_ALL"); 

$remotename[1] = "Modem 1";
$remotehost[1] = "89.122.xxx.xxx"; 
$remoteport[1] = "80"; 
...
...
...
$remotename[23] = "Modem 2";
$remotehost[23] = "89.122.xxx.xxx"; 
$remoteport[23] = "80"; 

$c   = count($remotename);
$c1 = count($remotehost); 
$c2 = count($remoteport); 
if($c != $c2){ 
    die("Atentie! Nu ai remoteport si remotehost pentru toate server-ele."); 
} 
?> 

<html> 
<head> 
<title>Verificare status IP</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 

<body bgcolor="#FFFFFF" text="#000000"> 
<table width="100" border="1" cellspacing="0" cellpadding="0" bordercolor="#000000"> 
  <tr> 
    <td> 
      <table width="400" border="0" cellspacing="0" cellpadding="0"> 
        <tr bgcolor="#00CCFF"> 
          <td><b><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="2">Nr.</font></b></td> 
          <td><b><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="2">Punct</font></b></td> 
          <td><b><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="2">IP:port</font></b></td> 
          <td><b><font color="#FFFFFF" face="Verdana, Arial, Helvetica, sans-serif" size="2">Stare</font></b></td> 
        </tr> 

<?php 
for ($i = 1; $i <= $c; $i++) { 
$fp = fsockopen("$remotehost[$i]", $remoteport[$i], $errno, $errstr, 1); 

if (!$fp) { 
?> 
       <tr bgcolor="#FFFFFF"> 
          <td><font color="#000000" face="Verdana, Arial, Helvetica, sans-serif" size="1"><?php echo $i; ?></font></td> 
          <td><font color="#000000" face="Verdana, Arial, Helvetica, sans-serif" size="1"><?php echo $remotename[$i]; ?></font></td> 
          <td><font color="#000000" face="Verdana, Arial, Helvetica, sans-serif" size="1"><?php echo $remotehost[$i].":".$remoteport[$i]; ?></font></td> 
          <td><font color="#ff0000" face="Verdana, Arial, Helvetica, sans-serif" size="1">DOWN</font></td> 
        </tr> 

<?php 
    } else { 
?> 

       <tr bgcolor="#FFFFFF"> 
          <td><font color="#000000" face="Verdana, Arial, Helvetica, sans-serif" size="1"><?php echo $i; ?></font></td> 
          <td><font color="#000000" face="Verdana, Arial, Helvetica, sans-serif" size="1"><?php echo $remotename[$i]; ?></font></td> 
          <td><font color="#000000" face="Verdana, Arial, Helvetica, sans-serif" size="1"><?php echo $remotehost[$i].":".$remoteport[$i]; ?></font></td> 
          <td><font color="#00ff00" face="Verdana, Arial, Helvetica, sans-serif" size="1">UP</font></td> 
        </tr> 

<?php 
fclose ($fp); 
} 
} 
?> 

      </table> 
    </td> 
  </tr> 
</table> 
</body> 
</html>

Scanare ip:port cu fsockopen() sau altceva

Scris: Mar Mai 01, 2012
de MarPlo
Salut
Incearca cu functia stream_socket_client().
Inlocuieste in scriptul tau, linia de cod:

Cod: Selectaţi tot

$fp = fsockopen($remotehost[$i], $remoteport[$i], $errno, $errstr, 1);
Cu aceasta:

Cod: Selectaţi tot

$fp = stream_socket_client('tcp://'.$remotehost[$i].':'. $remoteport[$i], $errno, $errstr, 3);
 
Poate merge, personal nu stiu altfel si nici sa testez nu am cum.

Scanare ip:port cu fsockopen() sau altceva

Scris: Mar Mai 01, 2012
de Cezar
Salut! Prompt ca intotdeauna :)
Multumesc pentru raspuns, dar nu functioneaza. Imi afiseaza DOWN, cu toate ca accesul ip:port din browser este ok.
Daca iti dau(PM) doua ip-uri reale ai timp sa ma ajuti?

Multumesc oricum inca o data!

Scanare ip:port cu fsockopen() sau altceva

Scris: Mar Mai 01, 2012
de MarPlo
Nu ma pricep la asa ceva, adica testare ip/port si in general ce e legat de retele /modemuri, experienta 0. Pana la acest subiect nici nu stiam ce face functia fsockopen().
Chiar daca asi testa scriptul pe ip corect, nu am idee ce trebuie facut sau verificat.
Incearca pe forumuri mai mari, cum ar fi: phpromania.net sau forum.softpedia.com, poate e cineva cu experienta in asa ceva.

Scanare ip:port cu fsockopen() sau altceva

Scris: Mar Mai 01, 2012
de Cezar
Multumesc pentru onestitate Marius. Raspunsul tau dovedeste cat esti de profesionist in ceea ce faci. Cand voi reusi (trebuie) sa rezolv aceasta problema voi posta rezolvarea pe acest topic. Pana atunci, toate cele bune.