check_bandwidth 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #!/bin/bash
  2. #
  3. #exitcodes
  4. #OK=0
  5. #WARNING=1 - nicht benutzt
  6. #CRITICAL=2
  7. #########################################################################
  8. # VNStat NRPE Check #
  9. # Aufruf: #
  10. # check_vnstat [rx oder tx?] [limit in mbit als int] [interface] [mode] #
  11. # Beispiel: #
  12. # ./check_vnstat rx 600 eth0 pps #
  13. # ./check_vnstat tx 20 eth0 bw #
  14. # Benoetigt: vnstat, bc #
  15. #########################################################################
  16. # Revision 3 vom 21.08.2013, kevin[at]kelker.info
  17. # debugging echoes auskommentiert
  18. rxtx=$1
  19. limit=$2
  20. interface=$3
  21. mode=$4
  22. ##############################
  23. # Packets pro Sekunde checken#
  24. ##############################
  25. check_packets()
  26. {
  27. vnstat_output=$(vnstat -i $interface -tr | grep $rxtx | awk '{print $4}')
  28. # echo "vnstat_output = $vnstat_output"
  29. # unit=$(echo $vnstat_output | awk '{print $2}')
  30. packets=$vnstat_output
  31. if [[ $packets -lt $limit ]]; then
  32. exit_vnstat=0
  33. else
  34. exit_vnstat=2
  35. fi
  36. # Schlussmeldung packets
  37. if [ $exit_vnstat -eq 0 ]; then
  38. echo "TRAFFIC OK - $rxtx Packets: $packets pps on $interface"
  39. exitstatus=0
  40. elif [ $exit_vnstat -eq 2 ]; then
  41. echo "TRAFFIC ALERT! - $rxtx Packets: $packets pps on $interface"
  42. exitstatus=2
  43. fi
  44. }
  45. ###############################
  46. # Bandbreite checken #
  47. ###############################
  48. check_bandwith()
  49. {
  50. vnstat_output=$(vnstat -i $interface -tr | grep $rxtx | awk '{print $2,$3}')
  51. # echo "vnstat_output = $vnstat_output"
  52. unit=$(echo $vnstat_output | awk '{print $2}')
  53. traffic=$(echo $vnstat_output | awk '{print $1}')
  54. # echo "$rxtx traffic = $traffic in $unit on $interface"
  55. traffic=$(echo "($traffic+0.5)/1" | bc)
  56. # echo "$rxtx traffic rounded = $traffic"
  57. if [[ "$unit" == *kbit* ]]; then
  58. # echo "kbit to mbit"
  59. traffic=$(expr $traffic / 1000)
  60. # echo "$rxtx traffic = $traffic"
  61. fi
  62. # echo "limit = $limit"
  63. if [[ $traffic -lt $limit ]]; then
  64. exit_vnstat=0
  65. # echo ok
  66. else
  67. exit_vnstat=2
  68. # echo critical
  69. fi
  70. # Schlussmeldung Bandbreite
  71. if [ $exit_vnstat -eq 0 ]; then
  72. echo "TRAFFIC OK - $rxtx Bandwith $vnstat_output $unit on $interface"
  73. exitstatus=0
  74. elif [ $exit_vnstat -eq 2 ]; then
  75. echo "TRAFFIC ALERT! - $rxtx Bandwith $vnstat_output $unit on $interface"
  76. exitstatus=2
  77. fi
  78. }
  79. ################################
  80. # Main #
  81. ################################
  82. if [ $mode = "pps" ]; then
  83. #echo "Checking Packets per seconds..."
  84. check_packets
  85. elif [ $mode = "bw" ]; then
  86. #echo "Checking Bandwith..."
  87. check_bandwith
  88. fi
  89. #exit $exitstatus
  90. exit $exit_vnstat