diff --git a/poweredge-cputemp.sh b/poweredge-cputemp.sh index e4cafc0..200d58b 100644 --- a/poweredge-cputemp.sh +++ b/poweredge-cputemp.sh @@ -3,13 +3,26 @@ # Run sensors command and store the output sensors_output=$(sensors) -# Extract temperatures for each CPU and find the highest core temp for each CPU +# 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_temps_clean=$(echo "$cpu1_temps" | tr -d '+°') -cpu2_temps_clean=$(echo "$cpu2_temps" | tr -d '+°') +cpu1_temp_value=$(echo "$cpu1_temps" | tr -d '+°' | awk -F '.' '{print $1}') +cpu2_temp_value=$(echo "$cpu2_temps" | tr -d '+°' | awk -F '.' '{print $1}') -# Format the final output -echo "CPU0: ${cpu1_temps_clean} | CPU1: ${cpu2_temps_clean}" +# 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 + +# Output the status code +echo "$status_code"