diff --git a/proc/linux-lib.pl b/proc/linux-lib.pl index da35ab5da..28281d877 100755 --- a/proc/linux-lib.pl +++ b/proc/linux-lib.pl @@ -496,11 +496,13 @@ sub get_current_cpu_data { my @cpu; my @fans; +my @cputhermisters; if (&has_command("sensors")) { my ($cpu, $cpu_aux, $cpu_package, $cpu_broadcom, $cpu_amd); my $fh = "SENSORS"; # Examples https://gist.github.com/547451c9ca376b2d18f9bb8d3748276c + # &open_execute_command($fh, "cat /tmp/.webmin/sensors /dev/null", 1); &open_execute_command($fh, "sensors /dev/null", 1); while (<$fh>) { @@ -517,6 +519,15 @@ if (&has_command("sensors")) { } ) if ($cpu_fan_num); + # AMD CPU Thermisters #1714 + if ($cpu && /thermistor\s+[\d]+:\s+[+-]([\d]+)/i) { + my $temp = int($1); + push(@cputhermisters, + { 'core' => scalar(@cputhermisters) + 1, + 'temp' => $temp + }) if ($temp); + } + # CPU package ($cpu_package) = $_ =~ /(?|(package\s+id\s+[\d]+)|(coretemp-[a-z]+-[\d]+))/i if (!$cpu_package); @@ -549,7 +560,7 @@ if (&has_command("sensors")) { # Non-standard outputs else { - # Auxiliary CPU temperature and fans were already captured + # Auxiliary CPU temperature and fans were already captured next if ($cpu_aux); # CPU types @@ -628,6 +639,8 @@ if (&has_command("sensors")) { } close($fh); } +@cpu = @cputhermisters + if (!@cpu && @cputhermisters); return (\@cpu, \@fans); }