後続のカールコマンドの標準入力を破壊せずにsshを介してコマンドを実行するにはどうすればよいですか?

後続のカールコマンドの標準入力を破壊せずにsshを介してコマンドを実行するにはどうすればよいですか?

このbashスクリプトはsshを介して他の場所からトークンを取得し、curlコマンドを実行してstdinのファイルからデータを読み取る必要があります。

#!/usr/bin/env bash
TOKEN=$(ssh somewhere cat sometoken.txt)
curl https://example.com \
  -H "Authorization: Bearer $TOKEN" \
  -H "someparam=@-" \
  -X POST

スクリプトは次のように呼び出されます。

cat somefile | myscript

カールを使用するTOKEN=abcd123代わりにハードコーディングすると、期待どおりにアップロードされます。$(ssh ...)somefile

しかし、私のファイルを使用しても$(ssh ...)アップロードされません。

私のスクリプトの標準入力が壊れているようですが、$(ssh ...)この問題を解決する方法がわかりません。

どんな助けでも大変感謝します。

答え1

つまり、ssh -n ...

このsshツールは標準入力からすべてのデータを読み込みます。これは、リモート側で実行されているすべてのコマンドに渡すことができます(必要に応じてssh remote 'cat >out' <inファイルの内容をリモートシステムにコピーするために使用できます)。

オプションを使用して-nこれを行わないように指示できます。/dev/null標準入力にリダイレクトするのとほぼ同じですssh ... </dev/null

関連情報