SSH 命令未按预期运行

SSH 命令未按预期运行

我正在尝试通过 SSH 将以下命令发送到我的所有客户端服务器。我的目的是将文件从主主机的 /home 复制到客户端服务器。文件“myservers”包含我的客户端服务器的完整限定主机名

for i in $(cat myservers);do echo;echo "$i";ssh -i id.sshkey root@"$i"; rsync -avzrph --progress -e "ssh -i /root/.ssh/id.key" root@MASTER_HOST:/home/ /home/;done

但上述命令在我的本地机器上失败了。它确实成功地通过 SSH 连接到客户端主机,但无法运行 rsync 部分。请分享您的想法。

答案1

我不会使用 rsync 路线,而是选择 scp。第一步尝试一下

scp [email protected]:/dir1/dir2/file.ext [email protected]:/dir2/dir2/dir2/ 

当你确认操作时,你可以使用-C添加压缩以提高性能。

如果您对此感到满意,您可以将其添加到您的 for 循环中。

答案2

我找到了解决方案。

for i in $(cat myservers);do echo "";echo "$i";cat rsync.sh | ssh -i id.sshkey root@"$i";done

rsync.sh 包含的内容。

➤ cat rsync.sh
#!/bin/bash
rsync -avzrph --progress -e 'ssh -o StrictHostKeyChecking=no -i /root/.ssh/id.key' root@MASTER_HOST:/home/ /home/

相关内容