我可以使用以下代码在一台服务器上完成此操作:
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
发生在远程计算机上。
在你的设置中这应该不重要。