【发布时间】:2019-06-19 20:43:03
【问题描述】:
我有一个小 bash 脚本,用于查看戴尔服务器上的机箱温度。该脚本将针对 Icinga2 的 50 台服务器运行,并通过 Influxdb 将结果报告给 Granfana。我需要从以下输出中获取临时值:
Temperature Probes Information
--
Probe Name : System Board Inlet Temp
Reading : 21.0 C
--
Probe Name : CPU1 Temp
Reading : 39.0 C
我正在考虑使用 awk 来打印值(回显不带引号的变量,awk '{print $14}' 会给我 21.0 作为示例。
问题是我有一些带有 2 个 CPU 的服务器,并且 awk 位置会有所不同
到目前为止,我收集上述输出的代码是:
HOST=$1
dell_probes=$(ssh someUser@${HOST} "/opt/dell/srvadmin/sbin/omreport chassis temps | grep Probe -A1")
echo "$dell_probes"
我还没有尝试过任何 sed/awk 解决方案,只是不确定最优雅的方法是什么。
我希望输出如下所示,以便可以将其与 influxdb 一起使用:
echo "$mb_temp"
21.0
echo "$cpu1_temp"
39.0
echo "$anyother_cpu_listed"
39.1
【问题讨论】:
-
这可能是朝着正确方向迈出的一步:
| awk -F ' : | C' '/Probe Name/{name=$2} /Reading/{print name,$2}' -
没关系,谢谢。我如何使用上面的方法将输出分配给单独的变量?当我回显变量时,它显示为
System Board Inlet Temp 23.0, CPU1 Temp 39.0
标签: bash awk grep grafana influxdb