+++ /dev/null
-#!/bin/bash
-
-# ============================== SUMMARY =====================================
-#Author : Ken Roulamellah
-#Date : 19/07/2018
-#Version : 1.0
-# Licence : GPL
-# ===================== INFORMATION ABOUT THIS PLUGIN ========================
-#
-# This plugin checks the average RX and TX bandwidth utilisation. It use
-# kbytes as measure unite.
-#
-# ========================== START OF PROGRAM CODE ===========================
-
-STATE_OK=0
-STATE_WARNING=1
-STATE_CRITICAL=2
-STATE_UNKNOWN=3
-
-interface=$( ip route | grep default | awk '{print $5}' | head -n1)
-function print_usage()
-{
- echo "Usage :"
- echo "$0 [ -i=INTERFACE] [ -ct=COUNT ] -w WARNING -c CRITICAL"
- echo "This script calculate the average bandwith usage."
- echo "Default values | interface: ${interface}, counter: 10"
-}
-
-counter=10
-warning=-1
-critical=-1
-
-sum_rx=0
-sum_tx=0
-avg_rx=
-avg_tx=
-i=
-
-
-if [[ $# -lt 4 ]];
-then
- echo "Error: Arguments are missing"
- print_usage
- exit $STATE_UNKNOWN
-fi
-
-while [[ $# -gt 0 ]]; do
- case "$1" in
- -i=*)
- interface="$(cut -d'=' -f2 <<<"$1")"
- shift
- ;;
- -ct=*)
- counter="$(cut -d'=' -f2 <<<"$1")"
- shift
- ;;
- -w)
- warning=$2
- shift 2
- ;;
- -c)
- critical=$2
- shift 2
- ;;
- *)
- printf "\nError: Invalid option '$1'"
- print_usage
- exit $STATE_UNKNOWN
- ;;
- esac
-done
-
-if [ $warning -lt 0 ] || [ $critical -lt 0 ];
-then
- echo "Error: You need to specify a warning and critical treshold"
- print_usage
- exit $STATE_UNKNOWN
-fi
-
-grep -q "up" /sys/class/net/$interface/operstate || exec echo "$interface: no such device or down"
-
-read rx <"/sys/class/net/$interface/statistics/rx_bytes"
-read tx <"/sys/class/net/$interface/statistics/tx_bytes"
-
-i=$counter
-while [ $i -gt 0 ]; do
- sleep 1
- read newrx <"/sys/class/net/$interface/statistics/rx_bytes"
- read newtx <"/sys/class/net/$interface/statistics/tx_bytes"
-
- #echo "old rx :$rx"
- #echo "new rx :$newrx"
- rx_cal=$(bc <<< "scale=2; ($newrx-$rx) / 1000")
- tx_cal=$(bc <<< "scale=2; ($newtx-$tx) / 1000")
-
- sum_rx=$(bc <<< "scale=2;$sum_rx+$rx_cal")
- sum_tx=$(bc <<< "scale=2;$sum_tx+$tx_cal")
-
- #echo "$interface {rx: $rx_cal ko/s, tx: $tx_cal ko/s}"
- rx=$newrx
- tx=$newtx
- ((i --))
-done
-
-avg_rx=$(bc <<< "scale=2;$sum_rx/$counter")
-avg_tx=$(bc <<< "scale=2;$sum_tx/$counter")
-
-#echo "$avg_rx"
-#echo "$avg_tx"
-
-
-if [ $(bc <<< "$avg_rx > $critical || $avg_tx > $critical") -eq 1 ]; then
- echo "$interface CRITICAL - AVG_RX: $avg_rx kb/s, AVG_TX:
- $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;"
- exit $STATE_CRITICAL
-elif [ $(bc <<< "$avg_rx > $warning || $avg_tx > $warning") -eq 1 ]; then
- echo "$interface WARNING - AVG_RX: $avg_rx kb/s, AVG_TX: $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;"
- exit $STATE_WARNING
-else
- echo "$interface - OK AVG_RX: $avg_rx kb/s, AVG_TX: $avg_tx kb/s | RX="$avg_rx"kbps;0;0;0; TX="$avg_tx"kbps;0;0;0;"
- exit $STATE_OK
-fi
-exit 3