Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: dj kuzmar en 22 Febrero 2012, 04:42 am



Título: Validacion de envio y recepcion via ftp con bat
Publicado por: dj kuzmar en 22 Febrero 2012, 04:42 am
Amigos acudo a uds ya que he realizado un bat, que hace envio y rescate en forma automatica via ftp, he querido validar si hay error, pero no siempre me funciona, cuando no se puede conectar envia primero el mensaje desconectado, como que valida antes que el ftp se ejecute, aca le envio el codigo:

@echo off
setlocal enabledelayedexpansion


rem  Se saca fecha de proceso en este caso de tarde


 for /f "delims=" %%a in (C:\ctm_internacional\fecha_aaaammdd_tarde.txt) do (
 set fecha=%%a
 )

rem **************************************************
rem preparamos variables y rutas

set rutares=c:\ctm_internacional\Archivos_RES\
set rutain=
set rutain2=
set rutain3=
set rutaout=c:\ctm_internacional\paso\CANJE_2\
set rutaout2=\\servidor\\Core_Entrada\%fecha%\FCC_%fecha%
set rutaout3=\\servidor\\Core_Entrada\%fecha%\Sigir_%fecha%


rem **************************************************
rem Lista canje2 fcc
echo CA348009ENT> lista_canje2_f.txt

rem **************************************************
rem Lista canje2 sigir


rem **************************************************


rem **************************************************
rem *** PASO 1
rem *** Parametros para canje2 rescate ( trae interfaz )

 for /f "delims=" %%p in (C:\ctm_internacional\canje2_paso1.txt) do (
 set paso1=%%p
 )


if %paso1% == 0 (

echo interatm> C:\ctm_internacional\canje2_tra.txt
echo manque04>> C:\ctm_internacional\canje2_tra.txt
echo cd salida>> C:\ctm_internacional\canje2_tra.txt
echo ascii >> C:\ctm_internacional\canje2_tra.txt
echo lcd C:\ctm_internacional\paso\CANJE_2 >> C:\ctm_internacional\canje2_tra.txt
echo mget CR009%fecha%   >>  C:\ctm_internacional\canje2_tra.txt
echo bye >> C:\ctm_internacional\canje2_tra.txt


rem *************************
rem rescatando interfaz


ftp -i -v -s:C:\ctm_internacional\canje2_tra.txt 163.250.1.7  >  C:\ctm_internacional\canje2_tra.log

findstr /i "Desconectado" C:\ctm_internacional\canje2_tra.log

  if !errorlevel! == 0 (
   echo 0 > C:\ctm_internacional\canje2_paso1.txt
   echo error en paso1 >> C:\ctm_internacional\canje2_tra.log
   type C:\ctm_internacional\canje2_tra.log   
   goto error
 
   echo 0 > C:\ctm_internacional\canje2_paso1.txt

GOTO END

:error

echo "ERROR en el envio o rescate estado DESCONECTADO O Conexion Cerrada Por el host" > C:\ctm_internacional\canje2_err.log
echo ***************************************************************************

type C:\ctm_internacional\canje2_err.log

goto end

:END
endlocal
exit


Título: Re: Validacion de envio y recepcion via ftp con bat
Publicado por: Eleкtro en 22 Febrero 2012, 05:52 am
Hola.

1 - Usa las respectivas etiquetas de código cuando postees un bat o los moderadores te regañarán.

2 - Estás expandiendo sin motivo.
Borra "Setlocal enabledelayedexpansion" y "END LOCAL" del script.

3 - No estás cerrando el IF con paréntesis, Falta 1.
Código:
If "cadena" ("cadena")



Código
  1. @echo off
  2.  
  3. Find /I "Desconectado" "C:\ctm_internacional\canje2_tra.log" >Nul
  4.  
  5. If %Errorlevel% EQU 0 (
  6. Echo 0 >> "C:\ctm_internacional\canje2_paso1.txt"
  7. Echo Error en paso1 >> "C:\ctm_internacional\canje2_tra.log"
  8. Type "C:\ctm_internacional\canje2_tra.log" | MORE /E /C
  9. Goto :Error
  10. ) ELSE (Goto :END)
  11.  
  12. :Error
  13. Echo ERROR en el envio o rescate estado DESCONECTADO O Conexion Cerrada Por el host >> "C:\ctm_internacional\canje2_err.log"
  14. Echo ****************************************************************************** >> "C:\ctm_internacional\canje2_err.log"
  15. Type "C:\ctm_internacional\canje2_err.log" | MORE /E /C
  16.  
  17. :END

Aunque no se si se solucionará el problema porque no he probado el ftp.
Salu2.