Shell script que transfiere un archivo de un dia anterior usando ssh sin password …

0
57

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
#

LEAVE A REPLY

Please enter your comment!
Please enter your name here