この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
。