SSH を使用してリモート ホスト経由でアクセスしたクラスター上でローカル入力ファイルを使用してローカル スクリプトを実行しようとすると、パイプが壊れる

SSH を使用してリモート ホスト経由でアクセスしたクラスター上でローカル入力ファイルを使用してローカル スクリプトを実行しようとすると、パイプが壊れる

SSH を使用してリモート マシン上のクラスターでローカル スクリプト (例: hostname.sh) を実行しようとしていますが、次のエラーが発生します。

> ssh -A _remote ssh -A _cluster 'bash' < hostname.sh
stdout: write: Broken pipe

この例では、ファイル hostname.sh は単にホスト名を出力しますが、一般的にはより複雑になることがあります。次のコードは機能するため、このエラーはパイプの誤った使用によって発生する可能性があります。

ssh -A _remote ssh -A _cluster hostname
> _cluster_name

いくつかの解決策を試しましたが、結局は _remote に ssh して、この場合は利用できない hotsname.sh を読み取ろうとするだけなので、すべて失敗します。うまくいくのは、hostname.sh を _remote にコピーし、リモートに SSH して、次を実行することです。

ssh _cluster "bash" < hostname.sh

しかし、これはローカルマシンとリモートマシン間で hostname.sh を常に同期する必要があることを意味します。

どのような助けでも大歓迎です。

関連情報