One Hat Cyber Team
Your IP :
216.73.217.126
Server IP :
185.33.55.30
Server :
Linux cl30.webspacecontrol.com 5.14.0-611.38.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 10 17:21:28 EDT 2026 x86_64
Server Software :
Apache
PHP Version :
8.1.34
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
lib64
/
nagios
/
plugins
/
custom
/
View File Name :
check_ssd_health
#!/bin/bash # Getting parameters: while getopts "d:w:c:L:h" OPT; do case $OPT in "d") _DISK=$OPTARG;; "w") _WARN=$OPTARG;; "c") _CRIT=$OPTARG;; "L") _LIFETIME=$OPTARG;; "h") help;; esac done STATE_OK=0 STATE_WARNING=1 STATE_CRITICAL=2 STATE_UNKNOWN=3 RETVAL=${STATE_UNKNOWN} function help { echo "Usage: $0 -d <DEVICE> -w <WARNING PERCENT> -c <CRITICAL PERCENT> [-L LIFETIME TBW OVERRIDE]" echo "Example: $0 -d /dev/sda -w 80 -c 90 -L 140" echo "Example: $0 -d '-d sat+megaraid,3 /dev/sda' -w 80 -c 90 -L 140" exit ${STATE_UNKNOWN} } if [ -z "${_DISK}" ]; then help fi sudo /usr/sbin/smartctl -a ${_DISK} 2>&1 >/dev/null _RV=$? if [[ $((${_RV} & 2)) -gt 0 ]]; then echo "Failed to open device (${_DISK})" RETVAL=${STATE_CRITICAL} else _DATA="$( sudo /usr/sbin/smartctl -a ${_DISK} | grep '\(NAND_Writes_32MiB\|Total_LBAs_Written\|Data Units Written:\|Device Model\|Model Number\)' | head -n2 | tr -d '[]' | sed 's/ GB//g' | rev | cut -d' ' -f1,2 | rev )" if [ $( echo "${_DATA}" | wc -l ) -ne 2 ]; then echo "Error in smartctl output: ${_DATA}" RETVAL=${STATE_UNKNOWN} else _MODEL=$( echo "${_DATA}" | head -n1 | sed 's/^ //g' | tr ' -' '_' ) if [ -n "${_LIFETIME}" ]; then _MODEL_MLTW=${_LIFETIME} else LTW_=0 LTW_INTEL_SSDSC2BB150G7=412 LTW_INTEL_SSDSC2BB240G4=140 LTW_INTEL_SSDSC2BB240G6=140 LTW_INTEL_SSDSC2KB240G7=620 LTW_INTEL_SSDSC2BB480G4=275 LTW_INTEL_SSDSC2BB480G6=275 LTW_INTEL_SSDSC2BB480G7=945 LTW_INTEL_SSDSC2BB800G6=450 LTW_INTEL_SSDSC2BB800G7=1663 LTW_INTEL_SSDSC2KB960G7=1860 LTW_INTEL_SSDSC2KB960G8=3400 LTW_INTEL_SSDSC2BB012T7=2455 LTW_INTEL_SSDSC2KB019T7=3270 LTW_Micron_5300_MTFDDAK1T9TDT=17520 LTW_Micron_5400_MTFDDAK1T9TGB=17520 LTW_INTEL_SSDPF2KE016T1=8400 LTW_SAMSUNG_MZ7LH3T8HMLT_00005=5466 _MODEL_MLTW=$( eval echo \$$( eval echo $( echo LTW_${_MODEL}) ) ) if [ -z "${_MODEL_MLTW}" ]; then echo "UNKNOWN: Unknown SSD model maximum lifetime writes (${_MODEL})" exit ${STATE_UNKNOWN} fi fi if [[ ${_MODEL} =~ "Micron" ]]; then _CLTW=$(( $( echo "${_DATA}" | tail -n1 ) /1000/1000/1000/2 )) elif [[ ${_MODEL} =~ "INTEL_SSDPF" ]]; then # intel nvme _CLTW="$( printf '%.3f' "$( echo "scale=3 ; $( echo "${_DATA}" | tail -n1 | cut -d' ' -f2 )/1000" | bc )" )" elif [[ ${_MODEL} =~ "SSDSC" ]]; then # intel ssd _CLTW=$(( $( echo "${_DATA}" | tail -n1 ) *32/1024/1024 )) elif [[ ${_MODEL} =~ "SAMSUNG" ]]; then # samsung ssd _CLTW=$(( $( echo "${_DATA}" | tail -n1 ) *512 /1024 /1024 /1024 /1024 )) fi _CURR_PERCENT=$( echo "scale=0 ; ${_CLTW} * 100 / ${_MODEL_MLTW}" | bc ) if [ ${_CURR_PERCENT} -ge ${_CRIT} ]; then echo "${_CLTW} TB (${_CURR_PERCENT}%) written of max ${_MODEL_MLTW} TB by \"${_DISK} ${_MODEL}\"|terabytes_written=${_CLTW};${_MODEL_MLTW};" RETVAL=${STATE_CRITICAL} elif [ ${_CURR_PERCENT} -ge ${_WARN} ]; then echo "${_CLTW} TB (${_CURR_PERCENT}%) written of max ${_MODEL_MLTW} TB by \"${_DISK} ${_MODEL}\"|terabytes_written=${_CLTW};${_MODEL_MLTW};" RETVAL=${STATE_WARNING} else echo "${_CLTW} TB (${_CURR_PERCENT}%) written of max ${_MODEL_MLTW} TB by \"${_DISK} ${_MODEL}\"|terabytes_written=${_CLTW};${_MODEL_MLTW};" RETVAL=${STATE_OK} fi fi fi exit ${RETVAL}