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

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

SSHを使用してリモートシステムのクラスタでローカルスクリプト(ホスト名.shなど)を実行しようとすると、次のエラーが発生します。

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

この例では、ホスト名.shファイルはホスト名のみを出力しますが、通常より複雑になる可能性があります。次のようにパイプを誤って使用すると、エラーが発生する可能性があります。

ssh -A _remote ssh -A _cluster hostname
> _cluster_name

いくつかの解決策を試しましたが、すべてが何らかの方法で失敗しました。 sshに_remoteに行き、hotsname.shを読み取ろうとしましたが、この場合は機能しません。どのように機能するかは、hostname.shを_remoteにコピーし、SSHを介してリモートにコピーしてから、次のコマンドを実行することです。

ssh _cluster "bash" < hostname.sh

ただし、これは、ローカルコンピュータとリモートコンピュータ間で常にhostname.shを同期させる必要があることを意味します。

助けてくれてありがとう。

関連情報