#!/bin/bash

# Aufgabe: Count der Errors von Bonding Devices
# Datum: 14.03.2019
# Issue: OS-533
# Author: Marc Vorwerk <marc.vorwerk@noris.de>

# Exit Status Codes
OK=0
WARNING=1
CRITICAL=2
UNKNOWN=3

# Config Parameter
MAX_FAILS=0
DEVICE_INTERFACE="bond0"
DEVICE="/proc/net/bonding/${DEVICE_INTERFACE}"

# Ich brauche bc - testen ob bc installiert ist
if ! command -v bc >/dev/null; then
    echo "Du hast bc nicht installiert - apt-get install bc"
    exit $UNKNOWN
fi

# Teste ob es $DEVICE gibt
if [ ! -f $DEVICE ]
then
    echo "Auf diesem Server gibt es $DEVICE nicht"
    exit $UNKNOWN
fi

# Doing
IFS=$'\n'
LINK_FAILURES=0

for LINE in $(cat "$DEVICE" | grep "Failure Count")
do
     FAILS=$( echo $LINE | awk -F ':' '{ print $2}')

     if [ "$FAILS" -ne "$MAX_FAILS" ]
     then
        LINK_FAILURES=$(($LINK_FAILURES + $FAILS))
        #LINK_FAILURES=$(echo "$LINK_FAILURES + $FAILS" | bc)
     fi
done
if [ "$LINK_FAILURES" -ne "$MAX_FAILS" ]
then
    echo "Auf $DEVICE sind $LINK_FAILURES Fehler"
    echo "Mit einem cat $DEVICE findest du mehr Infos"
    exit $CRITICAL
else
    echo "Auf $DEVICE sind keine Fehler"
    exit $OK
fi

# EXIT falls er nicht in die IF Bedingung kommt (sollte nicht passieren)

exit $UNKNOWN
