[help] showip shell

Allora sto cercando di creare un piccolo script che mi mostri il mio ip attuale (non quello di rete) da shell.

Fino adesso sono arrivato a questo;

<?php
     $surl = "maser.homelinux.net";
     $purl = "/~dad/ip.php";
     
     $fp = fsockopen($surl, 80);
     $query = "GET ". $purl ." HTTP/1.1\r\n";
     $query .= "Host: " . $surl . "\r\n";
     $query .= "Connection: Close\r\n\r\n";

     fputs($fp, $query);

     while(!feof($fp))
           $res = fgets($fp, 128);

     $tmp = tmpfile();
     $bodytmp = $res;
     fwrite($tmp, $bodytmp);
     fseek($tmp, 0);
     $read = fread($tmp, 1024);

     $regexp = "/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/";
     (!preg_match($regexp, $read)) ? print "Error ...\n"/* . $read . "\n" */: print "Ok!\n" . $read . "\n";

     fclose($fp);
     fclose($tmp);
?>

Il file ip.php non è altro che una richiesta banale dell'ip tramite la variabile globale $_SERVER.

<?php echo "<br />" . $_SERVER['REMOTE_ADDR']; ?>

Ora lo script funziona però non come vorrei io. In pratica vorrei che il sito da cui prendere l'ip sia uno di quelli famosi che girano in rete come ad esempio myip.it, però con questo genere di siti lo script non sembra funzionare, il problema credo stia nella regex perchè quando utilizzo la mia pagina di prova il mio ip viene mostrato, quando utilizzo uno di quei siti la richiesta non viene verificata.

Indi per ricapitolare, lo script funziona ma quando lo renderizzo ad altri siti che mostrano il proprio ip, la regex che controlla il contenuto della pagina non sembra funzionare è restituisce errore, questo non succede con il mio script di prova ...

Qualche anima pia sarebbe così gentile da dirmi dove sbaglio?  :'(

Per la cronaca la regex dovrebbe scartare tutto il codice html della pagina richiesta e trovare soltanto i valori che corrispondono alla regex, appunto ...

inviato 9 anni fa
DaD
DaD
1
modificato 9 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda