Vous pouvez toujours configurer ssh sans mot de passe afin de transférer des fichiers en utilisant sftp sans qu'un mot de passe ne soit demandé à l'utilisateur. Mais s'il n'est pas autorisé à configurer un ssh sans mot de passe, il existe un moyen d'automatiser les transferts de fichiers sftp. Cela peut être réalisé en utilisant 'attendre ‘ commande fournie par le shell tcl.
Pour que l'utilitaire expect fonctionne, nous devons installer le package « expect ». Pour cela utilisez la commande ci-dessous :
# yum install expect
Vous trouverez ci-dessous un exemple de script qui automatise l'accès à distance avec un fichier 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}
" Ici,
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.
Voici un exemple d'exécution du script qui exécute les commandes dans testjob.bat sur remote.example.com après s'être connecté en tant que root avec un mot de passe 'password'
# bash ./test.sh root@remote.example.com password testjob.bat