Hay varias herramientas que pueden enviar archivos scp a múltiples hosts (con conexiones simultáneas), como pssh y kanif. En términos de contraseñas, sugeriría usar el reenvío de agentes. Esto le permite conservar la clave en su máquina local, pero usarla al iniciar conexiones SSH desde otro host. De lo contrario, el --askpass
opción al parallel-scp
El comando pssh hace que solicite una contraseña para cada host.
Si no puede instalar una herramienta para hacer esto, configure el reenvío del agente (agregando el -A
opción a ssh
cuando se conecte a la máquina en la que está haciendo esto) y luego ejecute scp
en un bucle así:
for HOST in server1 server2 server3; do
scp somefile $HOST:~/somedir/
done
Intente hacer esto con un script esperado, por ejemplo,
#!/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
Lo anterior debería ser bastante sencillo para adaptarse a sus requisitos.