将 scp 文件同时发送到多个服务器

Man*_*ish 3 shell scp shell-script

我有一个名为 server.txt 的文件

假设它有以下服务器,可能会有更多的服务器 server1 server2 server3 server4

如何在 /tmp/ location 复制文件(所有服务器上的 file.txt 使用 scp 命令)。

Dep*_*iel 9

假设bash

for server in $(cat server.txt)
do
  scp file.txt "$server":/tmp/
done
Run Code Online (Sandbox Code Playgroud)

并行模式(如果 server.txt 很大,请不要使用此模式,因为您可能会耗尽带宽、停止连接,然后很难弄清楚哪些成功哪些失败了):

for server in $(cat server.txt)
do
  scp file.txt "$server":/tmp/ &
done
wait
Run Code Online (Sandbox Code Playgroud)

根据要求,现在提供密码支持:

while read SERVER PASSWORD
do
  sshpass -p "$PASSWORD" scp file.txt "$SERVER":/tmp/
done <./server.txt
Run Code Online (Sandbox Code Playgroud)

server.txt第一台服务器的主机名、空格、第一台服务器的密码放在第一行,以此类推。