Siempre puede configurar ssh sin contraseña para transferir archivos usando sftp sin que se le solicite al usuario una contraseña. Pero si no está permitido configurar un ssh sin contraseña, hay una manera de automatizar las transferencias de archivos sftp. Se puede lograr usando 'esperar ‘comando proporcionado por el shell tcl.
Para que funcione la utilidad expect, necesitamos instalar el paquete "expect". Para hacerlo, use el siguiente comando:
# yum install expect
A continuación se muestra un script de ejemplo que automatiza el acceso remoto con un archivo por lotes.
#!/bin/bash if (( $# < 3 )); then echo "Usage: $0 [remote addr] [password] [batch file]" echo echo -e "tremote addr : [loginid]:[host addr]n" exit fi REMOTE=$1 PASS=$2 BATCH=$3 expect -c " spawn sftp -o "batchmode no" -b "$BATCH" $REMOTE expect -nocase "password:" {send "$PASSr"; interact} "
Aquí,
spawn - to initiate the sftp process expect - it expects a particular string ( here it is "password:" prompt ) send - sends the password when the expect utility gets the required prompt.
Aquí hay un ejemplo de cómo ejecutar el script que ejecuta los comandos en testjob.bat en remote.example.com después de iniciar sesión como root con una contraseña 'contraseña'
# bash ./test.sh [email protected] password testjob.bat