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

한 가지 유형의 참조를 사용하는 것이 더 간단하고 문제를 해결합니다.

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'

관련 정보