• Publicidad

Descarga de archivo via FTP

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

Descarga de archivo via FTP

Notapor mulambo » 2007-08-15 13:21 @598

Hola, espero que se encuentren bien, en esta oportunidad mi problema es el siguiente:
Me conecto vía Telnet a una BD y la respuesta que recibo es la que sigue a continuación


+++ HLR9820 2007-08-15 14:05:27

SMU #062671

%%LST SUBDATA: RESULT=DataOfSub, COND=AllSub;%%

SUCCESS0001:Operation is successful

The results are stored to file D:\HLR9820 SMU\SMU Server\ftp\sqlresult-2007-08-15-14-16-13-054.txt on SMU server.

Total count = 1

There is together 1 report

--- END



El archivo que está en negritas es el que debo buscar en el servidor FTP, ese archivo tiene un formato donde sqlresult-2007-08-15 es la fecha del dia pero los demás números (-14-16-13-054) cambian, no son estandard como los primeros (que son la fecha del día).

Lo que necesito es capturar ese archivo en cuestión para poder descargarlo, Existirá una función donde pueda tomar la primera subcadena y compararla con el archivo que necesito descargar?

Gracias por su colaboración
mulambo
Perlero nuevo
Perlero nuevo
 
Mensajes: 22
Registrado: 2007-08-14 10:06 @462

Publicidad

Notapor kidd » 2007-08-15 15:23 @683

Hola,

En caso de que tengas capturado el output en una cadena, entonces puedes ejecutar el siguiente regexp para extraer el valor que pusiste en negritas, que es el nombre del archivo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$cadena =~ /\\([^\\]+\.txt)/m;

my $archivo = $1;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4



Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor explorer » 2007-08-15 17:09 @756

En estos casos en los que tenía que conectarme a un directorio y bajarme los ficheros nuevos, yo adoptaba otra solución:

Código: Seleccionar todo
* Conectarme al servidor
* Pedir un listado de los ficheros disponibles
* Por cada fichero de esa lista
*    Bajar el fichero si no está en el directorio local


Vamos, en Perl se haría también en cuatro líneas.

Esta solución se puede adoptar si en el directorio del servidor sabemos que solo pueden existir ficheros que podemos bajarnos. Si responden a un determinado patrón podemos filtrarlos con una expresión regular como ha mostrado kidd.

Pero claro, también es posible que no se pueda aplicar a tu caso y tengas que bajarte solo el fichero que te indican. O que no tengas posibilidades de pedir un listado del contenido porque el FTP esté cerrado para esa operació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 explorer » 2007-08-15 17:17 @762

Cuando dices que te conectas por Telnet, ¿a qué te refieres exactamente? ¿A mano o a máquina?

Con módulos como Net::Telnet puedes conectarte y obtener esa salida.
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 mulambo » 2007-08-16 09:38 @443

Hola....
Bueno, me conecto a la máquina, abro un telnet en DOS y lanzo unos comandos para generar el archivo que se crea en el directorio ftp.

Luego a ese directorio ftp me conecto con Perl, claro; el archivo en ese caso es cambiante como lo expliqué al principio, es imposible crearlo con el nombre personalizado.
mulambo
Perlero nuevo
Perlero nuevo
 
Mensajes: 22
Registrado: 2007-08-14 10:06 @462

Notapor explorer » 2007-08-16 10:02 @460

Por este foro encontrarás hilos que te muestran ejemplos de cómo usar Perl para hacer lo que estás haciendo ahora mismo a mano (la conexión telnet y dialogar con el servidor). Te puede ser útil si eres capaz de automatizar esa tarea.

En cuanto al nombre del fichero en el ftp, fíjate que la solución de kidd se basa en extraer el nombre del fichero a partir de la información que la conexión Telnet te devuelve. Y mi solución es la de conectarse por las bravas en el ftp, entrar en el directorio y bajarnos todos los ficheros nuevos que no tengamos. Esta segunda solución depende de si tu servidor de FTP te permite dar un listado de esos ficheros o los deja ocultos. En ese caso, solo te puede hacer la solución de kidd.
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


Volver a Básico

¿Quién está conectado?

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