Ada berbagai alat yang dapat scp file ke beberapa host (dengan koneksi simultan), seperti pssh dan kanif. Dalam hal kata sandi, saya sarankan menggunakan penerusan agen. Ini memungkinkan Anda untuk menyimpan kunci di mesin lokal Anda, tetapi menggunakannya saat memulai koneksi SSH dari host lain. Jika tidak, --askpass
ke parallel-scp
perintah dari pssh membuatnya meminta kata sandi untuk digunakan untuk setiap host.
Jika Anda tidak dapat menginstal alat untuk melakukan ini, atur penerusan agen (dengan menambahkan -A
opsi untuk ssh
saat menghubungkan ke mesin tempat Anda melakukan ini) lalu jalankan scp
dalam satu lingkaran seperti ini:
for HOST in server1 server2 server3; do
scp somefile $HOST:~/somedir/
done
Coba lakukan ini dengan skrip ekspektasi, mis.
#!/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
Hal di atas seharusnya cukup mudah untuk disesuaikan dengan kebutuhan Anda.