Il existe divers outils qui peuvent scp des fichiers sur plusieurs hôtes (avec des connexions simultanées), comme pssh et kanif. En termes de mots de passe, je suggérerais d'utiliser le transfert d'agent. Cela vous permet de conserver la clé sur votre ordinateur local, mais de l'utiliser lors de l'établissement de connexions SSH à partir d'un autre hôte. Sinon, le --askpass
option au parallel-scp
La commande de pssh demande un mot de passe à utiliser pour chaque hôte.
Si vous ne pouvez pas installer d'outil pour ce faire, configurez le transfert d'agent (en ajoutant le -A
option à ssh
lors de la connexion à la machine sur laquelle vous faites cela), puis exécutez scp
dans une boucle comme ceci :
for HOST in server1 server2 server3; do
scp somefile $HOST:~/somedir/
done
Essayez de le faire avec un script attendu, par exemple
#!/bin/bash
HOSTS="h1.lan h2.lan h3.lan"
read -p "Password: " PASSWORD
for HOST in $HOSTS
do
expect -c "
spawn /usr/bin/scp file [email protected]$HOST:/destination_path/
expect {
"*password:*" { send $PASSWORD\r;interact }
}
exit
"
done
Ce qui précède devrait être assez simple pour s'adapter à vos besoins.