View Full Version : [PHP]Dialogare con un server attraverso telnet
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?
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.
fputs no, penso serve fgets dopo aver dato fputs. Però devo studiarmi meglio la cosa.
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é?
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.