22 diciembre 2014

Automatizar una conexion SFTP en Bash

Existen ciertos sistemas en los que se nos requiere conectarnos por SFTP sin alternativa a ninguna otra solución, y necesitamos generar algún tipo de automatización, ya que todos los días hay que descargar un archivo en particular. Por ej, un Backup.





Para este tipo de automatizaciones, se utiliza una llave RSA/DSA, y así evitar el tener que ingresar una contraseña por medio del teclado.


Script de ejemplo:


###############################################
#!/bin/bash
echo "Comienzo del Script..."
sftp -i id_server_dsa root@server.domain.com <get backupdeldia.tar.gz
bye
EOF
############################################### 


-i: Para indicar que la conexión es mediante una clave RSA/DSA para que no pida contraseña.
id_server_dsa: La clave encriptada generada en el servidor.
root@server.domain.com: Usuario y Servidor. < get backupdeldia.tar.gz: Para descargar el archivo en cuestión. bye: Pasa salir de SFTP EOF: Para finalizar el ingreso de comandos en SFTP y vuelva a la consola.

Obviamente existen muchas cosas mas para hacer, y de varias maneras, este es un ejemplo mínimo para si estas buscando darte una idea de como hacerlo.

Adicionalmente aquí les dejo un Script real que hice para trabajar con un servidor SFTP del cual tenia que bajar los archivos de una carpeta (OUT), y luego borrarlos una vez descargados.

##########################################################
#Descarga de los archivos en la carpeta OUT.
date >> log/SFTP.log
echo "Comienza SFTP, se procede con la descarga" >> log/SFTP.log

sftp -oIdentityFile=id_server_dsa -oPort=21 root@server.domain.com <
cd OUT
get ./*
bye
EOF

RETVAL=$?
if [ $RETVAL -ne 0 ]
then
echo "Error en Download de los files" >> log/SFTP.log
exit 10
fi

date >> log/SFTP.log
echo "Finalizo SFTP, se procede con la descarga" >> log/SFTP.log

#Borrado de los archivos en el Servidor.
date >> log/SFTP.log
echo "Se eliminan los archivos en OUT" >> log/SFTP.log

sftp -oIdentityFile=id_server_dsa -oPort=21 root@server.domain.com <
cd OUT
rm ./*
bye
EOF

RETVAL=$?
if [ $RETVAL -ne 0 ]
then
echo "Error en borrado de los files descargados" >> log/SFTP.log
exit 20
fi

date >> log/SFTP.logecho "Se eliminaron los archivos en OUT" >> log/SFTP.log
##########################################################

Fuente original de la Imagen Aqui .

Saludos.


Tomado descaradamente de aca: http://desarrolloylinux.blogspot.com.ar/2014/08/linux-bash-automatizar-una-conexion.html

No hay comentarios: