• Publicidad

Net::Telnet timed-out

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Net::Telnet timed-out

Notapor RevangelyonX » 2007-02-06 14:43 @655

Hola a todos de nuevo, no sabía si postearlo aquí en el subforo de modulos.

Lo que yo pretendo es que al abrir el programa se introduzca la dirección IP o Hostname, user y password, y el programa haga un simple Dir o Ls según sea la plataforma en la que nos encontremos.

Código: Seleccionar todo
#Telnet.pl
#Coded by RevangelyonX
use Net::Telnet;
#Pidiendo datos al usuario necesarios para la conexión.
print "Introduzca Hostname o IP: \n";
$host = <STDIN>;
chop $host;
print "Introduzca Username: \n";
$user = <STDIN>;
chop $user;
print "Introduzca Password: \n";
$pass = <STDIN>;
chop $pass;
#Conexión con el modulo Net::Telnet
$t = new Net::Telnet (Timeout => 10,
                          Prompt => '/bash\$ $/');
    $t->open("$host");
    $t->login($user, $pass);
    @lines = $t->cmd("dir");
    print @lines;


Bien pues todo va bien, hasta que empieza la conexión, tarda un poco y me dice lo siguiente:

timed-out waiting for command prompt at telnet.pl line 17.

La línea es cuando se conecta a $host.

Miré en Cpan, y no comprendo el error, ya que está todo marcado igual.
Lo que me extraña, es la línea Prompt => '/bash\$ $/'");

bash es una shell de Nix y no de Windows, entonces lo cambié por cmd y el mismo error, también probé con cmd.exe y más de lo mismo....

Gracias por sus respuestas.

EDITADO: He buscado por el foro (perdón por no haberlo hecho antes, y bueno parece que el problema está en el prompt.)
DEspués de leer éste post: viewtopic.php?p=5054&highlight=#5054

Creo que no hay nada que hacer con windows ¿Verdad?
Última edición por RevangelyonX el 2007-02-06 15:01 @667, editado 1 vez en total
RevangelyonX
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2006-12-24 13:14 @593

Publicidad

Notapor explorer » 2007-02-06 14:52 @661

Para conectarte por telnet a una máquina, esa máquina debe tener en marcha un servidor de telnet.

¿La máquina a la que te conectas tiene activado el servicio de telnet? ¿Es Windows, Linux o Unix?

Por lo que dices al final, parece que quieres conectarte a un Windows. Ahora mismo desconozco cómo se llama el servicio Telnet en Windows. Y seguro que depende de la versión de Windows a la que te quieras conectar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor RevangelyonX » 2007-02-06 15:03 @669

Hola de nuevo Explorer, fijate que edité mi post ;)
Bien pues si, es un Windows, y claro que tiene el servicio Telnet activado :)
Uso Win XP Pro SP1
RevangelyonX
Perlero nuevo
Perlero nuevo
 
Mensajes: 6
Registrado: 2006-12-24 13:14 @593

Notapor explorer » 2007-02-06 15:38 @693

Pues entonces conéctate a mano, ejecutando el cliente telnet y miras a ver cómo es el prompt, y nos lo pones.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor creating021 » 2007-02-06 18:44 @822

Si vas a hacer algo grande es mejor que mires si el servidor esta en línea, para eso usamos Socket:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/path/a/perl
use strict;
use Socket;
use Net::Telnet;

sub CodigoTelnet {
 #...
}

sub ChequearServidor {
  my ($ip, $port) = @_; #IP o Hostname, no importa;
  socket(Socket, AF_INET, SOCK_STREAM, getprotobyname('tcp'));
  my $aton = inet_aton($ip) or die "Servidor $ip: $!\n";
  $port = ($port or getservbyname('telnet', 'tcp'));
  my $addr = sockaddr_in($port, $aton);
  if(connect(Socket, $addr){
     CodigoTelnet(@args);
  }
  else {
    die "No se pudo conectar a $ip:$port\n";
  }
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Es más largo pero así podrías ver si el problema es el puerto de Telnet o si no hay red (poniendo un poco mas de código, claro) y validar todo.
Expect the worst, is it the least you can do?
Avatar de Usuario
creating021
Perlero frecuente
Perlero frecuente
 
Mensajes: 595
Registrado: 2006-02-23 16:17 @720
Ubicación: Frente al monitor


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados