rmm-scripts/poweredge-cputemp.sh

32 lines
1.2 KiB
Bash

#!/bin/bash
# Run sensors command and store the output
sensors_output=$(sensors)
# Extract temperatures for each CPU and find the highest for each
cpu1_temps=$(echo "$sensors_output" | awk '/coretemp-isa-0000/ {p=1} /coretemp-isa-0001/ {p=0} p' | awk '/Core/ {print $3}' | sort -n | tail -n 1)
cpu2_temps=$(echo "$sensors_output" | awk '/coretemp-isa-0001/ {p=1} /i350bb-pci-0103/ {p=0} p' | awk '/Core/ {print $3}' | sort -n | tail -n 1)
# Strip out the + and degree symbol from temperatures
cpu1_temp_value=$(echo "$cpu1_temps" | tr -d '+°' | awk -F '.' '{print $1}')
cpu2_temp_value=$(echo "$cpu2_temps" | tr -d '+°' | awk -F '.' '{print $1}')
# Determine the status code based on temperature thresholds
if [ "$cpu1_temp_value" -ge 95 ] || [ "$cpu2_temp_value" -ge 95 ]; then
status_code=4
elif [ "$cpu1_temp_value" -ge 90 ] || [ "$cpu2_temp_value" -ge 90 ]; then
status_code=3
elif [ "$cpu1_temp_value" -ge 80 ] || [ "$cpu2_temp_value" -ge 80 ]; then
status_code=2
elif [ "$cpu1_temp_value" -ge 70 ] || [ "$cpu2_temp_value" -ge 70 ]; then
status_code=1
else
status_code=0
fi
# Format the final output
echo "CPU0: ${cpu1_temp_value} | CPU1: ${cpu2_temp_value}"