Puoi sempre configurare ssh senza password per trasferire file usando sftp senza che all'utente venga richiesta una password. Ma se non è consentito configurare un ssh senza password, c'è un modo per automatizzare i trasferimenti di file sftp. Può essere ottenuto utilizzando "aspetta ' comando fornito dalla shell tcl.
Affinché l'utilità Expect funzioni, è necessario installare il pacchetto "expect". Per farlo, usa il comando seguente:
# yum install expect
Di seguito è riportato uno script di esempio che automatizza l'accesso remoto con un file batch.
#!/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} "
Ecco,
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.
Ecco un esempio di come eseguire lo script che esegue i comandi in testjob.bat su remote.example.com dopo aver effettuato l'accesso come root con una password 'password'
# bash ./test.sh [email protected] password testjob.bat