web-dev-qa-db-ja.com

Scp複数のサーバーに同時にファイル

Server.txtというファイルがあります

それがサーバーの下にあると仮定すると、より多くのサーバーが存在する可能性がありますserver1 server2 server3 server4

/ tmp /の場所にあるファイル(scpコマンドを使用してすべてのサーバー上のfile.txt)をコピーするにはどうすればよいですか。

2
Manish

bashを想定:

for server in $(cat server.txt)
do
  scp file.txt "$server":/tmp/
done

並列モード(帯域幅が不足し、接続を失速させ、何が成功し何が失敗したかを理解するのに苦労する可能性があるため、server.txtが大きい場合はこれを使用しないでください):

for server in $(cat server.txt)
do
  scp file.txt "$server":/tmp/ &
done
wait

リクエストに応じて、パスワードをサポートするようになりました:

while read SERVER PASSWORD
do
  sshpass -p "$PASSWORD" scp file.txt "$SERVER":/tmp/
done <./server.txt

入れて、server.txt、最初のサーバーのホスト名、スペース、1行目の最初のサーバーのパスワードなど。

7
DepressedDaniel