SSH 到多台服务器并将文件合并到一台服务器中

SSH 到多台服务器并将文件合并到一台服务器中

我可以使用以下代码在一台服务器上完成此操作:

ssh server001 << EOF
cat /dir/file001.txt >> somefile
EOF

对于多个服务器,我的脚本能够 ssh 进入服务器,但由于某些原因,它找不到我的 file00x 文件并给出以下错误: cat: /dir/file00x.txt: No such file or directory即使该文件确实存在。

这是我的代码:

 for i in {10..15}; do
    ssh $i      //for simplicity, theres some text manipulation to get the actual name of the server
    cat /tmp/$i.txt
 done << newfile.txt

我也尝试过这个方法(显然不是正确的方法),但仍然找不到文件:

 for i in {10..15}; do
    ssh $i      
    cat /tmp/$i.txt >> newfile.txt
 done 

也尝试过这个,但也不起作用:

 for i in {10..15}; do
    ssh $i  << EOF    
    cat /tmp/$i.txt >> newfile.txt
    EOF
 done 

答案1

据我了解这个问题,您需要在远程计算机上访问,并且从哪里访问/tmp/$i.txt并不重要。newfile.txt

在这种情况下,我们不需要担心 HERE 文件或聪明,一个简单的

ssh $i cat /tmp/$i.txt >> newfile.txt

cat将在远程计算机上运行,​​但将在本地附加。

然后可以循环:

for i in {10..15}
do
  ssh $i cat /tmp/$i.txt >> newfile.txt
done

相反,如果您希望重定向也发生在远程计算机上,那么我们可以引用以下命令:

for i in {10..15}
do
  ssh $i "cat /tmp/$i.txt >> newfile.txt"
done

现在,这种情况cat $i.txt >> newfile.txt发生在远程计算机上。

在你的设置中这应该不重要。

相关内容