Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

¿Cómo puedo utilizar el comando sftp con usuario y contraseña en un script de Bash?

22 de marzo de 2011

Necesito transferir un archivo de log todas las noches a un host remoto mediante sftp desde un servidor que utiliza Linux. Como no tengo control sobre el servidor remoto, no puedo generar las claves RSA que me permitirían acceder a él sin tener que utilizar un usuario y contraseña.

Así que la pregunta es si puedo utilizar el comando sftp pasándole un usuario y contraseña dentro del propio script Bash y así ejecutarlo directamente mediante una tarea programada en el cron.

Estás leyendo una traducción autorizada de la pregunta How to run the sftp command with a password from Bash script? planteada por anubhava en StackOverflow.

Respuestas

#1

Como no puedes generar las claves RSA, que sería la única manera profesional de resolver este problema, tendrás que elegir una de estas tres alternativas:

  1. Utilizar el keychain
  2. Utilizar el comando sshpass (menos seguro, pero es justo lo que necesitas)
  3. Utilizar el comando expect (el método menos seguro de todos y un poco largo)

Si utilizas sshpass, que seguramente es la solución más cómoda en tu caso, deberías añadir lo siguiente al script de Bash:

export SSHPASS=escribe_aqui_el_password
sshpass -e sftp -oBatchMode=no -b - tu_usuario_sftp@tu_host_sftp << !
   cd directorio_donde_guardar_el_archivo/
   put /ruta/hasta/el/archivo.log
   bye
!

@librosweb

11 octubre 2014, 22:54