PDA

View Full Version : [PHP]Dialogare con un server attraverso telnet


dierre
12-06-2006, 15:40
Salve, ho necessità di fare delle operazioni via telnet su un server di una macchina remota, e volevo usare comodamente il php per farlo in maniera automatica.
Questo è l'abbozzo:


$server['ip'] = 'localhost';
$server['port'] = 2593;
$server['prefix'] = 1; // CTRL+A
$server['password'] = 'a';

function create_account($user,$pass)
{
global $server;
$fp = @fsockopen($server['ip'],$server['port'],$errno,$errstr,2);
if ($fp == null)
return false;
fputs($fp,chr($server['prefix']));
sleep(1);
fputs($fp,$server['password']."\n");
sleep(1);
fputs($fp,"account add $user $pass\n");
sleep(1);
fputs($fp,"a\n");
sleep(1);
fclose($fp);
return true;
}


Ora, come posso prendere il risultato che mi da il server remoto dopo che ho inviato un'istruzione?

NetZiro
12-06-2006, 15:53
Edit

dierre
12-06-2006, 16:06
In teoria basta eseguire l'istruzione su variabile
Es :

$risultato = fputs($fp,"a\n");

Non ho mai usato fputs.... dovrei documentarmi

ah quindi secondo te è fputs che restituisce il risultato eh? Buono a sapersi, devo documentarmi meglio pure io, perché non avevo capito lo facesse.

dierre
12-06-2006, 16:17
fputs no, penso serve fgets dopo aver dato fputs. Però devo studiarmi meglio la cosa.

dierre
20-06-2006, 22:37
ok...risolto anche se non proprio. Lo script semidefinitivo è questo ma c'è un problema tecnico:


<?php
$server['ip'] = 'dierre.xxxx.xxxx';
$server['port'] = 2593;
$server['prefix'] = 32; // SPACE
$server['user'] = 'dierre';
$server['password'] = 'xxxx';
$user1 = "sbrodolino123";
$pass1 = "ciao";

function create_account($user,$pass)
{
global $server;
$fp = @fsockopen($server['ip'],$server['port'],$errno,$errstr,2);
if ($fp == null) { echo "male";
return false;}
if(fputs($fp,chr($server['prefix']))) echo "<b>Inserisco lo spazio</b><br/>";
else echo "<b>NON inserisco lo spazio</b>";
sleep(1);
if(fputs($fp,$server['user']."\n")) echo "<b>Inserisco lo user</b><br/>";
else echo "<b>NON inserisco lo user</b>";
sleep(1);
if(fputs($fp,$server['password']."\n"))echo "<b>Inserisco la password</b><br/>";
else echo "<b>NON inserisco la password</b>";
sleep(1);
if(fputs($fp,"account add $user $pass\n"))echo "<b>Inserisco l'acco</b><br/><br/>";
sleep(1);
fputs($fp,"a\n");
sleep(1);
$leggi .= fgets($fp,4096)."<br/>";
$leggi .= fgets($fp,4096)."<br/>";
$leggi .= fgets($fp,4096)."<br/>";
$leggi .= fgets($fp,4096)."<br/>";
$leggi .= fgets($fp,4096)."<br/>";
$leggi .= fgets($fp,4096)."<br/>";
$leggi .= fgets($fp,4096)."<br/>";
echo $leggi;
fclose($fp);
echo "ciao";
return true;
}

create_account($user1,$pass1);
?>


ora funziona...ma come vedete c'è un obrobrio per leggere il return dal server.

Volevo usare un ciclo

while(!feof($fp)) echo fgets($fp,4096);
fclose($fp)


ma purtroppo non funziona, da errore di lettura dal server remoto, perché?

dierre
21-06-2006, 12:46
ecco l'errore:


Proxy Error

The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /inseraccount.php.

Reason: Error reading from remote server