我有3个Linux服务器,在每个服务器上我有一个文件夹,里面有几个文件。从其中一个服务器,我需要访问当前服务器文件夹中的文件和其他2个服务器文件夹中的文件,并将它们连接起来。
我能够在单个Linux服务器的一个文件夹或子文件夹中连接两个或多个文件。需要帮助才能跨服务器执行相同的操作。
,是:从3台服务器输入文件:server1/folder1/file1;server2/folder1/file1;server3/folder1/file1;
输出文件:server1/folder1/file1(包含3个服务器的内容)
同样,我需要对同一文件夹内的file2, file3等执行此操作。
是否可以使用ssh和cat编写相同的shell脚本?
我是这么想的。Nonindempotent:
如果运行两次,将相应地增大当前文件。
您需要ssh-key pair
和ssh-agent
运行。
#!/usr/bin/env bash
set -eox pipefail
servers=( server{1..3} )
files=( folder1/file{1..3} )
for file in "${files[@]}"; do
for server in "${servers[@]}"; do
ssh "$server cat $file" >> "$file"
done
done
回答教你良好的bash编码习惯。
我们在那里看到了这么多无聊的破碎的RealLife©®™shell脚本。
正确引用是shell脚本的关键之一。
学习如何在shell中正确地引用,这是非常重要的:
"双quote"每个包含空格/元字符的字面值和每个展开:
"$var"
,"$(command "$var")"
,"${array[@]}"
,"a & b"
。使用'single quotes'
作为代码或文字$'s: 'Costs $5 US'
,ssh host 'echo "$HOSTNAME"'
。参见
http://mywiki.wooledge.org/Quotes
http://mywiki.wooledge.org/Arguments
http://wiki.bash-hackers.org/syntax/words