elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Verificador de archivos enviados a un ftp
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Verificador de archivos enviados a un ftp  (Leído 2,134 veces)
morenochico

Desconectado Desconectado

Mensajes: 167


Ver Perfil
Verificador de archivos enviados a un ftp
« en: 5 Agosto 2008, 02:06 am »

Hola a todos. Aqui les dejo un code sencillo que sube varios archivos a un servidor ftp. El detalle es que sube de uno por uno y verifica que el archivo este en el servidor. Pude haberlo hecho mas sencillo pero como el servidor maneja muchos archivos y a su vez varios usuarios, no es buena idea sacar un listado para luego compararlos.

El problema es que es demasiado lento debido a la forma que esta hecho, la lentitud no es problema cuando son 10 o 20 archivos, pero si cuando son 2000 o mas.  El punto es si alguen tiene una idea como hacerlo mas eficiente siguiendo la idea de veririficar que el archivo realmente este en servidor ftp. A su vez creo que puede servirle a alguien.


Código:
@echo off

:CONTANDO
set /A contador=0
FOR %%x in (*.HTML, *.GIF *.jpg, *.asp) DO set /A contador=1+contador
echo .
echo .                    ____________________________________________________
echo                      tienes %contador% archivos para subir
echo .                    ____________________________________________________
echo .
pause > nul

:ENVIA

set /A conta=0
set /A movidos=1

FOR %%x in (*.HTML, *.GIF *.jpg, *.asp) DO (
 echo open mi_sitio_ftp         >  manda.ftp
 echo user usuario pasword      >> manda.ftp
 echo put %%x                   >> manda.ftp
 echo ls %%x                    >> manda.ftp
 echo quit                      >> manda.ftp
 ftp -v -n -s:manda.ftp > enviados.txt
 FINDSTR /E /I %%x enviados.txt > en_ftp2.txt
 echo %%x > local.txt
 call :COMPARA
 )

:COMPARA
set /P aqui=<local.txt
set /p alla=<en_ftp2.txt
if %aqui%==%alla% (
set /A movidos=1+%movidos%
echo  %movidos%/%contador%   -- %alla%  Archivo enviado correctamente
) ELSE (
if not %aqui%==%alla% DO (

echo          %aqui%  NO SE HA PODIDO ENVIAR. REVISA SI NO HAY PROBLEMAS DE COMUNICACION
)
goto :eof
echo total de archivos enviados               %movidos%
echo total de archivos que deberian enviarse  %contador%

Un poco de explicacion

Código:
FOR %%x in (*.HTML, *.GIF *.jpg, *.asp) DO ( 
Bueno aqui no hay mucha ciencia puesto que solo hago un ciclo for para los archivos con extensiones mencionadas. Lo importante es que la variable es la x que va tomando el valor del nombre del archivo segun se va recorriendo la lista en el directorio y las veces que se repiten las instrucciones de abajo.

Código:
 echo open mi_sitio_ftp         >  manda.ftp
 echo user usuario pasword      >> manda.ftp
 echo put %%x                   >> manda.ftp
 echo ls %%x                    >> manda.ftp
 echo quit                      >> manda.ftp

Puesto que segun yo no se pueden mandar variables a una conexion ftp, para cada archivo a subir creo un archivo de instrucciones ftp.

Código:
 ftp -v -n -s:manda.ftp > enviados.txt
Aqui abro una conexion ftp para cada archivo y mando la salida del comando a un archivo de texto.

Código:
 FINDSTR /E /I %%x enviados.txt > en_ftp2.txt
Busco el renglon donde esta el nombre del archivo en cuestion y a su ves lo mando a otro archivo, para tener en un archivo el nombre del documento que busco y que se supone esta en el servidor ftp.

Código:
 echo %%x > local.txt
Mando el nombre del documento que el ciclo for esta intentando enviar en ese momento a un archivo temporal.

Código:
set /P aqui=<local.txt
set /p alla=<en_ftp2.txt
Pongo el nombre del archivo que quiero enviar en variables.

Código:
if %aqui%==%alla% (
set /A movidos=1+%movidos%
echo  %movidos%/%contador%   -- %alla%  Archivo enviado correctamente
) ELSE (
Hago una comparacion de los archivos. Si el que estoy tratando de enviar se encuentra en el servidor solo incremento un contador para poder comparar al final cuantos archivos tengo y cuantos se subieron realmente.

Bien como les dije es sencillo pero pude servirle a alguien y creo tambien que alguien tendra una idea para hacerlo mas eficiente.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[JAVA] Sanitizador de palabras y verificador de RUT (Chile)
Java
carlitos.dll 3 12,307 Último mensaje 12 Octubre 2008, 00:32 am
por Pablo Videla
rutina para verificador ean 13 en mysql
Bases de Datos
heartless82 0 2,360 Último mensaje 20 Abril 2012, 22:00 pm
por heartless82
Archivos enviados por Skype
Seguridad
αиσиyмσυรCร 3 2,963 Último mensaje 19 Julio 2013, 16:36 pm
por z3nth10n
programa rut verificador
Programación C/C++
Dani2304 1 1,571 Último mensaje 24 Abril 2018, 20:34 pm
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines