| Shel script que transfiere un archivo de un dia anterior usando ssh sin password ... |
|
|
|
Hits: 913 |
| Viernes, 13 de Noviembre de 2009 15:53 |
|
El siguiente shell script hace la transferencia de archivos de un dia anterior conservando la fecha de creacion y permisos aun servidor remoto usando ssh sin password. #---------------------------------------------- #!/bin/sh -x # #      scp-cdrs.sh: Shell Script para la transferencia de achivos via SCP # #      Created by: LCC. Domingo Varela Y. #      Date: 16:35:00 27/May/09 #   Modified: 16:40:40 27/May/09 #   Last Modified: 18:16:40 27/May/09 #      Probe: True # # Settings D_Anterior=1 Dir_Remoto=`date +%Y%m%d` Dir_Local=`date --date "$D_Anterior days ago" +%Y%m%d` HORA_LOCAL=`date` HORA_ANTERIOR=`date --date "$D_Anterior days ago"` Directory='/directorio/de/trabajo/' HOST='111.222.333.4' USER='usuario' SRC='/home/username/' DST='/directorio/destino/del/usuario/' BKP_LOG='/temp/Logs-Yesterday/bkp_log-Yesterday.log' ETIQUETA='Z-' Contador=1 Archs='tipo_de_archivo*' Cero="0" /bin/touch $BKP_LOG cd $SRC echo echo "---------- INICIO DEL PROCESO --------------" echo "Directorio de trabajo actual '$SRC' ... OK" echo "--------------------------------------------" date --date "$D_Anterior days ago" | awk '{print $2,"",$3}'>/cdrani/Logs-Yesterday/Fecha-Yesterday.txt echo "Ejecucion del Shell Script con fecha anterior ... " cat /cdrani/Logs-Yesterday/Fecha-Yesterday.txt while read mes dia do   if [ $dia -le 9 ]; then   ls -l $Archs | grep $mes" "$dia |cut -d ' ' -f 4- | awk '{ print $3,$4,$5,$6}'> /cdrani/Logs-Yesterday/filtro-cdr0-Yesterday.txt   ls -l $Archs | grep $mes" "$dia |cut -d ' ' -f 4- | awk '{ print $3,$4,$5,$6}'>> /cdrani/Logs-Yesterday/bkp_log-Yesterday.log  else   ls -l $Archs | grep $mes" "$dia |cut -d ' ' -f 4- |awk '{ print $3,$4,$5,$6}' > /cdrani/Logs-Yesterday/filtro-cdr0-Yesterday.txt   ls -l $Archs | grep $mes" "$dia |cut -d ' ' -f 4- |awk '{ print $3,$4,$5,$6}' >> /cdrani/Logs-Yesterday/bkp_log-Yesterday.log  fi done </cdrani/Logs-Yesterday/Fecha-Yesterday.txt echo num=`wc -l /cdrani/Logs-Yesterday/filtro-cdr0-Yesterday.txt|awk '{print $1}'` echo "Existe(n) '$num' archivo(s) a transferir !!! ... OK" if [ "$num" -gt $Cero ]; then echo echo "****************************************************" echo "Hora y fecha de Inicio '$HORA_LOCAL'" echo "Para el proceso de archivos ... OK" echo "****************************************************" echo echo echo "==================================================================" echo "Mostramos el contenido del archivo (filtro-cdr0-Yesterday.txt) ... OK" echo "==================================================================" echo cat /cdrani/Logs-Yesterday/filtro-cdr0-Yesterday.txt echo sleep 1 for Archivo in `cat /cdrani/Logs-Yesterday/filtro-cdr0-Yesterday.txt | awk '{ print $4}'` do   echo   echo "----------------------------------------------------------"   echo "Nombre del archivo a copiar es: '$Archivo' ... OK"   echo   echo "Copiando Archivo No. '$Contador' cuyo nombre es '$Archivo' ... OK "   echo "Cambiamos los permiso del archivo '$Archivo' a -rwxrwxrwx ... OK "   /bin/chmod 777 $Archivo   echo   echo "El archivo a Copiar es '$Archivo' con etiqueta '$ETIQUETA' ... OK"   /usr/bin/scp -p $Archivo $USER@$HOST:$DST$ETIQUETA$Archivo   echo   echo "El Archivo etiquetado '$ETIQUETA$Archivo' ha sido transferido .... OK"   echo "Listamos el contenido del directorio remoto '$DST' ... OK"   /usr/bin/ssh $USER@$HOST /usr/bin/ls -l ./`basename ${ETIQUETA}${Archivo}`    echo    echo "Quitamos la etiqueta al archivo '$ETIQUETA$Archivo' y la dejamos como '$Archivo' ... OK"   /usr/bin/ssh $USER@$HOST /usr/bin/mv ./`basename ${ETIQUETA}${Archivo}` ./`basename ${Archivo}`   echo   echo "Nuevamente listamos el contenido del directorio remoto '$DST' ... OK"   /usr/bin/ssh $USER@$HOST /usr/bin/ls -l ./`basename ${Archivo}`   sleep 1   let Contador=Contador+1   echo   echo "Se mueve el archivo '$Archivo' al directorio temporal '$Directory$Dir_Local' ... OK"   /bin/chmod 644 $Archivo   /bin/mv $Archivo $Directory$Dir_Local   echo "Eliminamos una linea del archivo (filtro-cdr0-Yesterday.txt) ... OK"   /bin/sed -i '1d' /cdrani/Logs-Yesterday/filtro-cdr0-Yesterday.txt   echo "----------------------------------------------------------"   echo done echo "****************************************************" echo "Fin de la transferencia " echo "****************************************************" echo else    echo    echo "------------------------------------- ATENCION ------------------------------------------"    echo "Hora y fecha actual/anterior '$HORA_LOCAL' -- '$HORA_ANTERIOR' ... OK"    echo "El directorio '$SRC' contiene '$num' archivos '$Archs' que transferir con la fecha de '$HORA_ANTERIOR' ... OK"    echo "-----------------------------------------------------------------------------------------"    echo fi # # Fin del Shell Script # |














