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 [email protected] password testjob.bat