![获取 CPU 温度,将其存储在 VAR 中并将其发送到服务器](https://linux22.com/image/183214/%E8%8E%B7%E5%8F%96%20CPU%20%E6%B8%A9%E5%BA%A6%EF%BC%8C%E5%B0%86%E5%85%B6%E5%AD%98%E5%82%A8%E5%9C%A8%20VAR%20%E4%B8%AD%E5%B9%B6%E5%B0%86%E5%85%B6%E5%8F%91%E9%80%81%E5%88%B0%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
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