Esistono vari strumenti che possono eseguire lo scp di file su più host (con connessioni simultanee), come pssh e kanif. In termini di password, suggerirei di utilizzare l'inoltro dell'agente. Ciò consente di mantenere la chiave sul computer locale, ma di utilizzarla quando si avviano connessioni SSH da un altro host. Altrimenti, --askpass
opzione al parallel-scp
comando da pssh richiede una password da utilizzare per ogni host.
Se non puoi installare uno strumento per farlo, imposta l'inoltro dell'agente (aggiungendo -A
opzione a ssh
quando ti connetti alla macchina su cui lo stai facendo) e poi esegui scp
in un ciclo in questo modo:
for HOST in server1 server2 server3; do
scp somefile $HOST:~/somedir/
done
Prova a farlo con uno script di attesa, ad es.
#!/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
Quanto sopra dovrebbe essere abbastanza semplice per adattarsi alle tue esigenze.