Advertisement
Proff_Ust

Untitled

Nov 9th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.00 KB | None | 0 0
  1. #!/bin/bash
  2. export LC_ALL=""
  3. export LANG="en_US.UTF-8"
  4. ##### OPTIONS VERIFICATION #####
  5. if [[ -z "$1" || -z "$2" || -z "$3" ]]; then
  6. ##### DISCOVERY #####
  7. DEVICES=`ls /dev | sed -e '/^\([s]d[a-z]\{1,2\}\)$/!d'
  8. if [[ -n $DEVICES ]]; then
  9. JSON="{ \"data\":["
  10. SEP=""
  11. for DEV in $DEVICES; do
  12. JSON=$JSON"$SEP{\"{#HDNAME}\":\"$DEV\"}"
  13. SEP=", "
  14. done
  15. JSON=$JSON"]}"
  16. echo $JSON
  17. fi
  18. exit 0
  19. fi
  20. ##### PARAMETERS #####
  21. RESERVED="$1"
  22. DISK="$2"
  23. METRIC="$3"
  24. SMARTCTL="sudo /usr/sbin/smartctl"
  25. CACHE_TTL="1700"
  26. CACHE_FILE="/tmp/zabbix.smart.${DISK}.cache"
  27. EXEC_TIMEOUT="1"
  28. NOW_TIME=`date '+%s'`
  29. ##### RUN #####
  30. if [ -s "${CACHE_FILE}" ]; then
  31. CACHE_TIME=`stat -c"%Y" "${CACHE_FILE}"`
  32. else
  33. CACHE_TIME=0
  34. fi
  35. DELTA_TIME=$((${NOW_TIME} - ${CACHE_TIME}))
  36. #
  37. if [ ${DELTA_TIME} -lt ${EXEC_TIMEOUT} ]; then
  38. sleep $((${EXEC_TIMEOUT} - ${DELTA_TIME}))
  39. elif [ ${DELTA_TIME} -gt ${CACHE_TTL} ]; then
  40. echo "" >> "${CACHE_FILE}" # !!!
  41. DATACACHE=`${SMARTCTL} -a /dev/${DISK}`
  42. echo "${DATACACHE}" > "${CACHE_FILE}" # !!!
  43. echo "`date`" >> "${CACHE_FILE}" # !!!
  44. chmod 640 "${CACHE_FILE}"
  45. fi
  46. #
  47.  
  48. if [ $METRIC = "write" ]; then
  49. cat "${CACHE_FILE}" | grep -i "^write" | awk '{print $8}' | head -n1
  50.  
  51. elif [ $METRIC = "read" ]; then
  52. cat "${CACHE_FILE}" | grep -i "^read" | awk '{print $8}' | head -n1
  53.  
  54. elif [ $METRIC = "health" ]; then
  55. cat "${CACHE_FILE}" | grep -i "health" | awk '{print $4}' | head -n1
  56.  
  57. elif [ $METRIC = "temp" ]; then
  58. cat "${CACHE_FILE}" | grep -i "Current" | awk '{print $4}' | head -n1
  59.  
  60. elif [ $METRIC = "vendor" ]; then
  61. cat "${CACHE_FILE}" | grep -i "Vendor" | awk '{print $2}' | head -n1
  62.  
  63. elif [ $METRIC = "product" ]; then
  64. cat "${CACHE_FILE}" | grep -i "Product" | awk '{print $2}' | head -n1
  65.  
  66. elif [ $METRIC = "serial" ]; then
  67. cat "${CACHE_FILE}" | grep -i "Serial" | awk '{print $3}' | head -n1
  68.  
  69. elif [ $METRIC = "size" ]; then
  70. cat "${CACHE_FILE}" | grep -i "Capacity" | head -n1 | sed "s/,//g" | awk '{print $3}'
  71.  
  72.  
  73. fi
  74.  
  75. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement