Wenn 我使用sensors
我得到这个输出
cpu_thermal-virtual-0
Adapter: Virtual device
temp1: +55.0 C (crit = +120.0 C)
我只需要+55.0℃存储在变量中温度并将其发送到服务器:
curl -i -k -X POST -H "Content-Type: application/json" --data '{ "id":"2","timestamp":"100","data":"temp"}' https://dv7knsjzph.execute-api.eu-central-1.amazonaws.com/prod/boxtronic-devices/2/data/
答案1
TEMP=$(sensors -j | jq '."cpu_thermal-virtual-0"."temp1"."temp1_input"')
curl -i -k -X POST -H "Content-Type: application/json" --data '{ "id":"2","timestamp":"100","data":"'${TEMP}'"}' https://dv7knsjzph.execute-api.eu-central-1.amazonaws.com/prod/boxtronic-devices/2/data/
$()
是接收输出并将其保存到变量中TEMP
(类似于反引号`
但可以封装)
-j
对于sensors
- 命令输出 json 格式的数据
jq
是一个对json进行操作的工具。引号的使用很重要,因为-
对 具有特殊含义jq
。内部部分的输出$()
应该是原始温度。
在curl
- 线上,温度从 - 变量注入TEMP
。请注意,这必须位于任何单引号之外,否则它将保留为${TEMP}
而不是被变量内容替换。大括号是可选的,但推荐使用。
答案2
temp=`sensors | awk '/temp1/{print $2}'`
curl -i -k -X POST -H "Content-Type: application/json" --data "{ \"id\":\"2\",\"timestamp\":\"100\",\"data\":\"$temp\"}" $URL