Use head -1 to be sure to get a single value for sensors

Some can report 2 values, and Zabbix won't be able to parse it
tags/zabbix-agent-addons-0.2.108-1
Daniel Berteaud 5 years ago
parent 8180aa2897
commit 376db5167c
  1. 8
      zabbix_scripts/util_generate_sensors_ini

@ -124,7 +124,7 @@ if ($ipmitool && -x $ipmitool){
$sensor->{description} = $name; $sensor->{description} = $name;
$sensor->{type} = 'temp'; $sensor->{type} = 'temp';
$sensor->{unit} = '°C'; $sensor->{unit} = '°C';
$sensor->{cmd} = "$ipmitool sdr get '$name' | grep 'Sensor Reading' | awk '{print \$4}'"; $sensor->{cmd} = "$ipmitool sdr get '$name' | grep 'Sensor Reading' | awk '{print \$4}' | head -1";
my $id = sensor_name($name); my $id = sensor_name($name);
$sensors->{$id} = $sensor; $sensors->{$id} = $sensor;
print "Found a temperature sensor using IPMI: $name\n"; print "Found a temperature sensor using IPMI: $name\n";
@ -174,7 +174,7 @@ if ($ipmitool && -x $ipmitool){
$sensor->{description} = $name; $sensor->{description} = $name;
$sensor->{type} = 'fan'; $sensor->{type} = 'fan';
$sensor->{unit} = ($value =~ m/percent|%/ || $val < 100) ? '%' : 'rpm'; $sensor->{unit} = ($value =~ m/percent|%/ || $val < 100) ? '%' : 'rpm';
$sensor->{cmd} = "$ipmitool sdr get '$name' | grep 'Sensor Reading' | awk '{print \$4}'"; $sensor->{cmd} = "$ipmitool sdr get '$name' | grep 'Sensor Reading' | awk '{print \$4}' | head -1";
my $id = sensor_name($name); my $id = sensor_name($name);
$sensors->{$id} = $sensor; $sensors->{$id} = $sensor;
print "Found a fan sensor using IPMI: $name\n"; print "Found a fan sensor using IPMI: $name\n";
@ -224,7 +224,7 @@ if ($ipmitool && -x $ipmitool){
$sensor->{description} = $name; $sensor->{description} = $name;
$sensor->{type} = 'power'; $sensor->{type} = 'power';
$sensor->{unit} = ($name =~ m/%/) ? '%' : 'Watt'; $sensor->{unit} = ($name =~ m/%/) ? '%' : 'Watt';
$sensor->{cmd} = "$ipmitool sdr get '$name' | grep 'Sensor Reading' | awk '{print \$4}'"; $sensor->{cmd} = "$ipmitool sdr get '$name' | grep 'Sensor Reading' | awk '{print \$4}' | head -1";
my $id = sensor_name($name); my $id = sensor_name($name);
$sensors->{$id} = $sensor; $sensors->{$id} = $sensor;
print "Found a power sensor using IPMI: $name\n"; print "Found a power sensor using IPMI: $name\n";
@ -271,7 +271,7 @@ if ($lmsensor && -x $lmsensor){
$sensor->{description} = $name; $sensor->{description} = $name;
$sensor->{type} = 'temp'; $sensor->{type} = 'temp';
$sensor->{unit} = '°C'; $sensor->{unit} = '°C';
$sensor->{cmd} = "$lmsensor | grep '$name:' | cut -d+ -f2 | cut -d. -f1"; $sensor->{cmd} = "$lmsensor | grep '$name:' | cut -d+ -f2 | cut -d. -f1 | head -1";
my $id = sensor_name($name); my $id = sensor_name($name);
$sensors->{$id} = $sensor; $sensors->{$id} = $sensor;
print "Found a temperature sensor using lm_sensors: $name\n"; print "Found a temperature sensor using lm_sensors: $name\n";

Loading…
Cancel
Save