| Transfencia de archivos via ssh sin password |
|
|
|
Hits: 792 |
| Viernes, 13 de Noviembre de 2009 15:49 |
|
El siguiente shell script tiene la funcion de transferir una serie de archivos a un servidor remoto usando ssh sin passwd, los archivos transferidos conservan la fecha actual de creacion y los permisos. #--------------------------------------------------------- #!/bin/sh # #      scp-cdrs.sh: Shell Script para la transferencia de achivos via SCP # #      Created by: LCC. Domingo Varela Y. #      Date: 17:05:00 01/Abr/09 #   Modified: 08:13:40 08/May/09 #   Last Modified: 18:18:40 02/Sept/09 #      Probe: True # # Settings Dir_Remoto=`date +%Y%m%d` Dir_Local=`date +%Y%m%d` HORA_LOCAL=`date` Directory='/directorio/de/trabajo/' HOST='111.222.333.4' USER='usuario' SRC='/home/username/' DST='/directorio/destino/' BKP_LOG='/tmp/Logs/bkp_log.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 "--------------------------------------------" ls -l $Archs > /cdrani/Logs/Found-Files.txt num=`wc -l /cdrani/Logs/Found-Files.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 "Existe(n) '$num' archivo(s) a transferir !!! ... OK" echo "****************************************************" echo date | awk '{print $2,"",$3}'>/cdrani/Logs/Fecha.txt #cat /cdrani/Logs/Fecha.txt while read mes dia do   if [ $dia -le 9 ]; then   ls -l stream*| grep $mes" "$dia |cut -d ' ' -f 4- | awk '{ print $3,$4,$5,$6}'> /cdrani/Logs/filtro-cdr0.txt   ls -l stream*| grep $mes" "$dia |cut -d ' ' -f 4- | awk '{ print $3,$4,$5,$6}'>> /cdrani/Logs/bkp_log.log  else   ls -l stream* | grep $mes" "$dia |cut -d ' ' -f 4- |awk '{ print $3,$4,$5,$6}' > /cdrani/Logs/filtro-cdr0.txt   ls -l stream* | grep $mes" "$dia |cut -d ' ' -f 4- |awk '{ print $3,$4,$5,$6}' >> /cdrani/Logs/bkp_log.log  fi done </cdrani/Logs/Fecha.txt echo echo "==================================================================" echo "Mostramos el contenido del archivo (filtro-cdr0.txt) ... OK" echo "==================================================================" echo cat /cdrani/Logs/filtro-cdr0.txt echo sleep 1 for Archivo in `cat /cdrani/Logs/filtro-cdr0.txt | awk '{ print $4}'` do # # Las sigtes 5 lineas se agregaron para la comprobacion de la conexion via ssh #   echo "Comprobando la conexion via ssh al servidor BYTE ..."   /usr/bin/ssh $USER@$HOST /usr/bin/ls -l   if test $? -eq 0    then     echo     echo "Conexion establecida !!!" # # +++ #     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/mv $Archivo $Directory$Dir_Local     echo "Eliminamos una linea del archivo (filtro-cdr0.txt) ... OK"     /bin/sed -i '1d' /cdrani/Logs/filtro-cdr0.txt     echo "----------------------------------------------------------"     echo # # Las sigtes 5 lineas son parte del if para la comprobacion de conexion via SSH #   else     echo     echo "Error de conexion via SSH, no se pudo contactar el servidor BYTE !!!"     echo "Hora y fecha actual $HORA_LOCAL"     break   fi # # ++ # done echo "****************************************************" echo "Fin de la transferencia " echo "****************************************************" echo else    echo    echo "------------------------------------- ATENCION ------------------------------------------"    echo "Hora y fecha actual '$HORA_LOCAL'"    echo "El directorio '$SRC' contiene '$num' archivos stream0.* que transferir ... OK"    echo "-----------------------------------------------------------------------------------------"    echo fi # Fin del Shell Script # |















