Advertisement
Guest User

Untitled

a guest
Jul 21st, 2017
446
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.12 KB | None | 0 0
  1. #!/usr/bin/env sh
  2. #
  3. # vim: ft=sh
  4. #
  5. # Copyright (c) 2017 Ian Gregory
  6. #
  7. # Permission to use, copy, modify, and distribute this software for any
  8. # purpose with or without fee is hereby granted, provided that the above
  9. # copyright notice and this permission notice appear in all copies.
  10. #
  11. # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  12. # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  13. # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  14. # ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  15. # WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  16. # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  17. # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  18. #
  19. # Based on "OpenBSD Memory Plugin for Nagios" - Copyright 2008 - patrick@pahem.deA
  20. #
  21. # This plugin checks the used/free/total # memory of OpenBSD. You can set
  22. # warning and critical integer/precentage(%) values with -w and -c.
  23. #
  24. # Example usage:
  25. # check_openbsd_mem.sh -w 15% -c 10%
  26. # Will produce following output:
  27. # OK - Free: 503M Used: 504M Total: 1007M | free_mem=503MB;151;100;0;1007
  28. #
  29.  
  30. PROGNAME=$(basename "$0")
  31. STATE_OK=0
  32. STATE_WARNING=1
  33. STATE_CRITICAL=2
  34. STATE_UNKNOWN=3
  35.  
  36. print_usage()
  37. {
  38. echo "Usage: $PROGNAME [-w <integer value>] [-c <integer value>]"
  39. echo ""
  40. echo "Arguments:"
  41. echo " -w <integer value>"
  42. echo " Generate warning state if free memory under percentage(%) value"
  43. echo " -c <integer value>"
  44. echo " Generate critical state if free memory under percentage(%) value"
  45. echo ""
  46. }
  47.  
  48. while test -n "$1"; do
  49. case "$1" in
  50. -w)
  51. PERCENT_WARN=$2
  52. shift
  53. ;;
  54. -c)
  55. PERCENT_CRIT=$2
  56. shift
  57. ;;
  58. *)
  59. echo "Unknown argument: $1"
  60. print_usage
  61. exit $STATE_UNKNOWN
  62. ;;
  63. esac
  64. shift
  65. done
  66.  
  67. FREE_MEM=$(( $(/usr/bin/vmstat | /usr/bin/tail -1 | /usr/bin/awk '{ print $5 }') / 1024 ))
  68. TOTAL_MEM=$(( $(/sbin/sysctl -n hw.physmem) / 1024 / 1024 ))
  69. USED_MEM=$((TOTAL_MEM - FREE_MEM));
  70.  
  71. # checks -w and -c parameter and transform input
  72. if [ -n "$PERCENT_WARN" ]; then
  73. if [ "$PERCENT_WARN" -gt 100 ]; then
  74. echo "Error: Percentage of warning (-w) over 100%."
  75. exit $STATE_UNKNOWN
  76. else
  77. WARN=$((TOTAL_MEM * PERCENT_WARN / 100))
  78. fi
  79. fi
  80.  
  81. if [ -n "$PERCENT_CRIT" ]; then
  82. if [ "$PERCENT_CRIT" -gt 100 ]; then
  83. echo "Error: Percentage of critical (-c) over 100%."
  84. exit $STATE_UNKNOWN
  85. else
  86. CRIT=$((TOTAL_MEM * PERCENT_CRIT / 100))
  87. fi
  88. fi
  89.  
  90. OUTPUT="Free: ${FREE_MEM}M Used: ${USED_MEM}M Total: ${TOTAL_MEM}M | free_mem=${FREE_MEM}MB;$WARN;$CRIT;0;$TOTAL_MEM"
  91.  
  92. # checks critical parameter if any specified
  93. if [ -n "$CRIT" ]; then
  94. if [ $FREE_MEM -lt $CRIT ]; then
  95. echo "CRITICAL - $OUTPUT"
  96. exit $STATE_CRITICAL
  97. fi
  98. fi
  99. # checks warning parameter if any specified
  100. if [ -n "$WARN" ];then
  101. if [ $FREE_MEM -lt $WARN ]; then
  102. echo "WARNING - $OUTPUT"
  103. exit $STATE_WARNING
  104. fi
  105. fi
  106.  
  107. # output for STATE_OK
  108. echo "OK - $OUTPUT"
  109. exit $STATE_OK
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement