/root/test.sh
リモートサーバーには次のものがあります。
#!/bin/bash
date
リモートサーバーから次の出力を取得します。
# ./test.sh
Fri Dec 18 07:41:10 EST 2015
# bash <(cat /root/test.sh)
Fri Dec 18 07:41:23 EST 2015
ただし、ローカルコンピュータで同じコマンドを実行しようとすると、次の結果が表示されます。
$ ssh root@remote_server /root/test.sh
Fri Dec 18 07:44:32 EST 2015
$ ssh root@remote_server bash <(cat /root/test.sh)
cat: /root/test.sh: No such file or directory
bash: /dev/fd/63: No such file or directory
それでは、前回実行したときの問題は何でしたか?このようなスクリプトを実行するのは奇妙だと思うかもしれませんbash <(cat /root/test.sh)
。私がこれを行う理由は、それが私の現実の単純化されたバージョンだからです。私の実際のコードは、インターネットからダウンロードしてローカルで実行するBashスクリプトです。さまざまなパラメータを使用して実行するコンピュータが多いため、ローカルコンピュータで実行しようとしています。
ベストアンサー1
このようにファイル記述子を渡すことはできませんssh
。<(...)
この構成はシステムにダミーファイルを生成し、リモートシステムで実行しても意味がありません。
実際に使用したい場合は引用符で囲み、bashがある場合はリモートシステムで評価されます。
ssh root@remote_host "bash <( cat /root/test.sh )"