Curlを使用して「シェル出力」をJSONデータとして公開する方法

Curlを使用して「シェル出力」をJSONデータとして公開する方法

次のコマンドを受け取りました。

 curl -H 'Content-Type: application/json' -X POST -d '{"host": "'$(hostname)'"}' http://sitename.com/update.php

期待どおりに動作しますが、送信しようとすると稼働時間代わりに出力CPU名私は得る:

curl: (6) Could not resolve host: 19:12; Name or service not known
curl: (6) Could not resolve host: up; Name or service not known
curl: (7) Failed to connect to 0.0.0.4: Invalid argument
curl: (6) Could not resolve host: days,; Name or service not known
curl: (6) Could not resolve host: 5:57,; Name or service not known
curl: (7) Failed to connect to 0.0.0.3: Invalid argument
curl: (6) Could not resolve host: users,; Name or service not known
curl: (6) Could not resolve host: load; Name or service not known
curl: (6) Could not resolve host: average; Name or service not known
curl: (6) Could not resolve host: 0.07,; Name or service not known
curl: (6) Could not resolve host: 0.05,; Name or service not known
curl: (3) [globbing] unmatched close brace/bracket at pos 6

これがスペースによって引き起こされるのは明らかですが、どうすれば削除できますか?

スペースを削除できますアッ:

 curl -H 'Content-Type: application/json' -X POST -d '{"uptime": "'$(uptime | awk '{print $3$4}')'"}' http://sitename.com/update.php

「4日」がかかりますが、より良い解決策が必要です。 :D

答え1

1種類の参照を使用する方が簡単で、問題を解決します。

curl -H "Content-Type: application/json" -X POST -d "{\"uptime\": \"$(uptime)\"}" "http://sitename.com/update.php"

または、2つの参照タイプを使用できますが、あまりエレガントです。

curl -H 'Content-Type: application/json' -X POST -d '{"uptime": "'"$(uptime)"'"}' 'http://sitename.com/update.php'

関連情報