• Publicidad

¿Cómo introduzco un prompt en Perl?

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

¿Cómo introduzco un prompt en Perl?

Notapor agarcia » 2006-08-24 04:08 @214

Quiero crear un script que se lanze en un servidor, el cual se encargue de buscar un directorio en todas las unidades de disco que se llame serc luego allí se encargue de ejecutar unos ficheros. Pero mi principal duda es cómo ordenarle que busque. Actualmente tengo implementado esto, pero no me funciona:

Código: Seleccionar todo
$telnet = Net::Telnet->new
(
 Timeout=>10, Prompt=>'/[A-Z]:\\\\.*>\s*$/i', Host=>'192.168.4.58'
);


ALGUIEN ME PUEDE AYUDAR!!!!!!!!!!!!!!!!!!!
agarcia
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-08-24 04:02 @210

Publicidad

Notapor explorer » 2006-08-24 06:42 @321

Prueba a poner primero un prompt más sencillo, como por ejemplo: '/> $/'. ¿Te falla en esta línea o en la de login?
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

Sigo con problemas de Perl

Notapor agarcia » 2006-09-12 12:02 @543

El mensaje que me muestra de error exactamente es el siguiente:

timed-out waiting for command prompt at D:\Datos\Scripts\parada_Windows_2000.pl line 12.

Al final he modificado el script y he quedado lo siguiente simplemente para probar:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Net::Telnet;

$telnet = Net::Telnet->new

(

 Timeout=>10, Prompt=>'/[A-Z]:\\\\.*>\s*$/i', Host=>'192.168.1.2'

 );

$telnet->login('admin', 'xxxxxx');

@listing = $telnet->cmd("dir");

print @listing;

$telnet->close;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Simplemente para ver si se conectaba a través de telnet y hacía un dir del directorio actual, pero no hay manera, el caso es que una conexion directa a traves del comando telnet 192.168.1.2 si me deja hacerlo. No se que falla. Si tienes idea de donde puede venir el problema te agradecería que me lo dijeras

Gracias por tu ayuda,
agarcia
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-08-24 04:02 @210

Notapor explorer » 2006-09-12 12:19 @554

Escribe aquí un volcado de una sesión con un telnet hecho a mano.
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

problems telnet

Notapor agarcia » 2006-09-14 02:51 @160

explorer escribiste:Escribe aquí un volcado de una sesión con un telnet hecho a mano.


Microsoft (R) Windows (TM) Version 5.00 (Build 2195)
Welcome to Microsoft Telnet Service
Telnet Server Build 5.00.99206.1
login: admin
password: ****

Y en la pantalla siguiente se muestra:

*==============================================
Welcome to Microsoft Telnet Server.
*==============================================
C:\>


Tengo los servicios de Telnet de las 2 máquinas levantados además como a la máquina que deseo acceder es desde un Windows 2003 a un Windows 2000, le he tenido que habilitar tambien el protocol NMS, creo que se llamaba.Y como podrás ver el acceso manual funciona perfectamente pero a la hora de lanzar el script, me sale el error que te comenté ayer.

GRACIAS
agarcia
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-08-24 04:02 @210

Notapor explorer » 2006-09-14 05:16 @261

Me está pasando exactamente lo mismo con el acceso a un router ADSL. Al final, he metido en un bucle diez intentos de conexión con un espera de un segundo; y suele entrar al quinto o sexto intento.

Según el manual, se podría probar con este prompt: '/c:\\\\>$/i'.

Ojo, si después del '>' hay algún espacio en blanco, deberás ponerlo en la expresión regular. Puedes ponerlo como ' ' si sabes que es uno sólo (también como '\s') y si son más, como '\s*'.

Si no te funciona, prueba con expresiones regulares más cortas, como '/>\s*$/', por ejemplo.
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 explorer » 2006-09-14 05:34 @274

Me parece que he encontrado una explicación...

http://search.cpan.org/dist/Net-Telnet/ ... ws_Machine

Lo de siempre... que Windows es una mierda... que Microsoft siempre hace lo que le da la gana... y que es mejor usar otra cosa.

Según http://www.thescripts.com/forum/thread50345.html el problema es que Windows envía caracteres de control después de enviar el prompt, por lo que es muy difícil capturarles con la expresión regular. Y que una posible opción es usar el comando 'ls -l' en lugar de 'dir'.

Solución mucho mejor: usar otro programa de servidor de Telnet.
Solución infinitamente mucho mejor: formatear el ordenador e instalar Linux.
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 agarcia » 2006-09-14 05:47 @282

Perdona por mi ignorancia, pero me podrías decir como puedo meter en un bucle lo que me has comentado partiendo del script que tengo hecho?????,

En cuanto a lo de la solucion de formateo me parece que es imposible porque es un servidor y no puedo hacer eso.

Lo que no entiendo es por que lanzando el mismo script de un Windows 2003 a un Windows 2003 si que funciona y cuando lo hago del Windows 2003 al Windows 2000 NOoOOOOOOOO!!!.

Gracias
agarcia
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-08-24 04:02 @210

Notapor explorer » 2006-09-14 06:26 @310

El problema no está en el bucle que se pudiera escribir para reintentar la conexión. Mira el segundo enlace que te he puesto y verás que el servidor telnet de windows devuelve caracteres de control. Ese es el problema. Y si no lo tienes en el 2003 es quizás porque Microsoft aprendió la lección...
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 agarcia » 2006-09-14 06:47 @324

[Pues nada, entonces tendré que probar otro sistema aunque no se todavía cual ,pero en fin, a ver que se me puede ocurrir, porque tambien lo estuve intentando con SSH, pero tampoco hubo manera, Muchas gracias de todos modos.
Un saludo.
agarcia
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2006-08-24 04:02 @210


Volver a Intermedio

¿Quién está conectado?

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