#!/usr/bin/env perl # Copyright 2014 Pierre Mavro # Copyright 2014 Vivien Didelot # Copyright 2014 Andreas Guldstrand # Copyright 2014 Benjamin Chretien # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . use strict; use warnings; use utf8; use Getopt::Long; binmode(STDOUT, ":utf8"); # default values my $t_warn = $ENV{T_WARN} || 70; my $t_crit = $ENV{T_CRIT} || 90; my $chip = $ENV{SENSOR_CHIP} || ""; my $temperature = -9999; sub help { print "Usage: temperature [-w ] [-c ] [--chip ]\n"; print "-w : warning threshold to become yellow\n"; print "-c : critical threshold to become red\n"; print "--chip : sensor chip\n"; exit 0; } GetOptions("help|h" => \&help, "w=i" => \$t_warn, "c=i" => \$t_crit, "chip=s" => \$chip); # Get chip temperature open (SENSORS, "sensors -u $chip |") or die; while () { if (/^\s+temp1_input:\s+[\+]*([\-]*\d+\.\d)/) { $temperature = $1; last; } } close(SENSORS); $temperature eq -9999 and die 'Cannot find temperature'; # Print short_text, full_text print "$temperature°C\n"; # Print color, if needed if ($temperature >= $t_crit) { print "#FF0000\n"; exit 33; } elsif ($temperature >= $t_warn) { print "#FFFC00\n"; } exit 0;