修正する

修正する

修正する

このコマンドを使用してJSONを渡すことができることがわかりました。

command -j /dev/stdin <<< '{"key":"value"}'

ところで電話してはいけません。SSH

ssh {target} 'command -j /dev/stdin <<< '{"key":"value"}''

JSONではなく文字列として送信されると思いますか?理由を知っている人はいますか?


JSON文字列をオプションに渡す必要があるコマンドがあり、何らかの理由でherestringtoを使用して渡す必要があります/dev/stdin

はい

command -j /dev/stdin <<< '{"key":"value"}'

ベストアンサー1

リモートコマンドの一部としてこの文字列をリダイレクトする必要はありません。リダイレクトされたデータは、sshリモートコマンドの標準入力で終了します。

ssh remote 'some command' <<<'whatever string'

あなたに関する限り、

ssh target 'command -j /dev/stdin' <<<'{"key":"value"}'

ただし、これはすでにJSONでエンコードされているkeyと想定しています。value

JSON設定jq(値がシェル変数に格納されていると仮定して値の正しいエンコーディングを取得するには$value):

jq -nc --arg val "$value" '{ key: $val }' | ssh target 'command -j /dev/stdin'

または、次のようにjoJSONドキュメントを作成します。

jo key="$value" | ssh target 'command -j /dev/stdin'

おすすめ記事