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

0
1801

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