Página 1 de 1

¿Cómo introduzco un prompt en Perl?

NotaPublicado: 2006-08-24 04:08 @214
por agarcia
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!!!!!!!!!!!!!!!!!!!

NotaPublicado: 2006-08-24 06:42 @321
por explorer
Prueba a poner primero un prompt más sencillo, como por ejemplo: '/> $/'. ¿Te falla en esta línea o en la de login?

Sigo con problemas de Perl

NotaPublicado: 2006-09-12 12:02 @543
por agarcia
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.002 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,

NotaPublicado: 2006-09-12 12:19 @554
por explorer
Escribe aquí un volcado de una sesión con un telnet hecho a mano.

problems telnet

NotaPublicado: 2006-09-14 02:51 @160
por agarcia
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

NotaPublicado: 2006-09-14 05:16 @261
por explorer
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.

NotaPublicado: 2006-09-14 05:34 @274
por explorer
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.

NotaPublicado: 2006-09-14 05:47 @282
por agarcia
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

NotaPublicado: 2006-09-14 06:26 @310
por explorer
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...

NotaPublicado: 2006-09-14 06:47 @324
por agarcia
[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.