次のコードを使用して、1つのサーバーでこれを行うことができます。
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
また、これを試しましたが、そのうちの1つも機能しませんでした。
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
リモートコンピュータでこれが起こります。
これは設定では重要ではありません。