Использование bash -s
с заключенным в кавычки heredoc может использоваться для запуска вашего кода в точности таким, как он есть, без каких-либо изменений:
ssh server2 bash -s <<'EOF'
echo "{\"hostname\":\"`hostname`\" , \"date\":\"`date '+%Y-%m-%d %H:%M:%S'`\"}"
EOF
В общем, использование конкатенации строк для генерации JSON - плохая идея (может привести к выводу, который на самом деле не является допустимым JSON, если ваши команды возвращают неожиданный вывод). Подумайте, что ваш контент должен быть разделен символами новой строки, когда он проходит через SSH, а затем генерировать JSON локально с помощью инструмента с поддержкой синтаксиса, такого как jq
:
IFS=$'\n' read -r -d '' hostname date < <(
ssh server2 'hostname && date +"%Y-%m-%d %H:%M:%S" && printf "\0"'
)
jq --arg hostname "$hostname" --arg date "$date" \
'{ "hostname": $hostname, "date": $date }'