Foros del Web » Programando para Internet » PHP »

Problemilla con telnet en php

Estas en el tema de Problemilla con telnet en php en el foro de PHP en Foros del Web. Hola de nuevo. Tengo un problemilla con un script php que encontre en la web y que me gusta mucho porque es muy rapido al ...
  #1 (permalink)  
Antiguo 09/10/2008, 04:46
Avatar de farruko  
Fecha de Ingreso: julio-2008
Mensajes: 13
Antigüedad: 15 años, 9 meses
Puntos: 0
Problemilla con telnet en php

Hola de nuevo.

Tengo un problemilla con un script php que encontre en la web y que me gusta mucho porque es muy rapido al conectar y leer datos pero que tiene el problema de que se queda parado {sin hacer nada} si no llega a conectar.

¿Habria alguna posibilidad de ponerle un timeout o que avise si no llega a conectar?

Agradeceria mucho cualquier aportacion porque mis conocimientos en php son bastante limitados

Os adjunto el codigo:

<?

class Telnet {
/* (c) [email protected] */


var $sock = NULL;


function telnet($host,$port) {
$this->sock = fsockopen($host,$port);
socket_set_timeout($this->sock,2,0);
}


function close() {
if ($this->sock)
fclose($this->sock);
$this->sock = NULL;
}


function write($buffer) {
$buffer = str_replace(chr(255),chr(255).chr(255),$buffer);
fwrite($this->sock,$buffer);
}


function getc() {
return fgetc($this->sock);
}


function read_till($what) {
$buf = '';
while (1) {
$IAC = chr(255);


$DONT = chr(254);
$DO = chr(253);


$WONT = chr(252);
$WILL = chr(251);


$theNULL = chr(0);


$c = $this->getc();


if ($c === false)
return $buf;


if ($c == $theNULL) {
continue;
}


if ($c == "\021") {
continue;
}


if ($c != $IAC) {
$buf .= $c;


if ($what ==
(substr($buf,strlen($buf)-strlen($what)))) {
return $buf;
} else {
continue;
}
}


$c = $this->getc();


if ($c == $IAC) {
$buf .= $c;
} else if (($c == $DO) || ($c == $DONT)) {
$opt = $this->getc();
// echo "we wont ".ord($opt)."\n";
fwrite($this->sock,$IAC.$WONT.$opt);
} elseif (($c == $WILL) || ($c == $WONT)) {
$opt = $this->getc();
// echo "we dont ".ord($opt)."\n";
fwrite($this->sock,$IAC.$DONT.$opt);
} else {
// echo "where are we? c=".ord($c)."\n";
}
}


}
}


$tn = new telnet("192.168.255.100",23);
echo $tn->read_till("ogin: ");
$tn->write("admin\r\n");
echo $tn->read_till("word: ");



Un saludo y gracias
  #2 (permalink)  
Antiguo 09/10/2008, 05:34
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 6 meses
Puntos: 48
Respuesta: Problemilla con telnet en php

http://es2.php.net/manual/en/function.fsockopen.php
  #3 (permalink)  
Antiguo 10/10/2008, 05:02
Avatar de farruko  
Fecha de Ingreso: julio-2008
Mensajes: 13
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problemilla con telnet en php

Muchas gracias, lo he utilizado y ha funcionado perfectamente.

Tengo otra duda: ¿con este script puedo ejecutar dos telnet en paralelo o tengo que modificar algo?. De momento lo he intentado y no es capaz de ejecutar los dos telnet a la vez, se queda como colgado el explorador sin hacer nada.

Saludos
  #4 (permalink)  
Antiguo 12/10/2008, 11:43
Avatar de farruko  
Fecha de Ingreso: julio-2008
Mensajes: 13
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Problemilla con telnet en php

¿Alguien por favor me podría ayudar?, no se que pasa que cuando ejecuto dos telent simuláneos no avanzan ninguno de los dos, por separados funcionan correctamente.

Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 08:50.