修正する
このコマンドを使用してJSONを渡すことができることがわかりました。
command -j /dev/stdin <<< '{"key":"value"}'
ところで電話してはいけません。SSH。
ssh {target} 'command -j /dev/stdin <<< '{"key":"value"}''
JSONではなく文字列として送信されると思いますか?理由を知っている人はいますか?
JSON文字列をオプションに渡す必要があるコマンドがあり、何らかの理由でherestring
toを使用して渡す必要があります/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'
または、次のようにjo
JSONドキュメントを作成します。
jo key="$value" | ssh target 'command -j /dev/stdin'