Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- export LC_ALL=""
- export LANG="en_US.UTF-8"
- ##### OPTIONS VERIFICATION #####
- if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
- ##### DISCOVERY #####
- DEVICES=`ls /dev | sed -e '/^\([s]d[a-z]\{1,2\}\)$/!d'
- if [[ -n $DEVICES ]]; then
- JSON="{ \"data\":["
- SEP=""
- for DEV in $DEVICES; do
- JSON=$JSON"$SEP{\"{#HDNAME}\":\"$DEV\"}"
- SEP=", "
- done
- JSON=$JSON"]}"
- echo $JSON
- fi
- exit 0
- fi
- ##### PARAMETERS #####
- RESERVED="$1"
- DISK="$2"
- METRIC="$3"
- SMARTCTL="sudo /usr/sbin/smartctl"
- CACHE_TTL="1700"
- CACHE_FILE="/tmp/zabbix.smart.${DISK}.cache"
- EXEC_TIMEOUT="1"
- NOW_TIME=`date '+%s'`
- ##### RUN #####
- if [ -s "${CACHE_FILE}" ]; then
- CACHE_TIME=`stat -c"%Y" "${CACHE_FILE}"`
- else
- CACHE_TIME=0
- fi
- DELTA_TIME=$((${NOW_TIME} - ${CACHE_TIME}))
- #
- if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then
- sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME}))
- elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then
- echo "" >> "${CACHE_FILE}" # !!!
- DATACACHE=`${SMARTCTL} -a /dev/${DISK}`
- echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
- echo "`date`" >> "${CACHE_FILE}" # !!!
- chmod 640 "${CACHE_FILE}"
- fi
- #
- if [ $METRIC = "write" ]; then
- cat "${CACHE_FILE}" | grep -i "^write" | awk '{print $8}' | head -n1
- elif [ $METRIC = "read" ]; then
- cat "${CACHE_FILE}" | grep -i "^read" | awk '{print $8}' | head -n1
- elif [ $METRIC = "health" ]; then
- cat "${CACHE_FILE}" | grep -i "health" | awk '{print $4}' | head -n1
- elif [ $METRIC = "temp" ]; then
- cat "${CACHE_FILE}" | grep -i "Current" | awk '{print $4}' | head -n1
- elif [ $METRIC = "vendor" ]; then
- cat "${CACHE_FILE}" | grep -i "Vendor" | awk '{print $2}' | head -n1
- elif [ $METRIC = "product" ]; then
- cat "${CACHE_FILE}" | grep -i "Product" | awk '{print $2}' | head -n1
- elif [ $METRIC = "serial" ]; then
- cat "${CACHE_FILE}" | grep -i "Serial" | awk '{print $3}' | head -n1
- elif [ $METRIC = "size" ]; then
- cat "${CACHE_FILE}" | grep -i "Capacity" | head -n1 | sed "s/,//g" | awk '{print $3}'
- fi
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement