Module: check_mk
Branch: master
Commit: c2f45d2a4da128da2433e35ffb7226585a202ba3
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=c2f45d2a4da128…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Wed Dec 3 17:26:06 2014 +0100
added lnx_if.bsd from Henry Wahl
---
agents/plugins/lnx_if.bsd | 105 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 105 insertions(+)
diff --git a/agents/plugins/lnx_if.bsd b/agents/plugins/lnx_if.bsd
new file mode 100755
index 0000000..7b5b686
--- /dev/null
+++ b/agents/plugins/lnx_if.bsd
@@ -0,0 +1,105 @@
+echo '<<<lnx_if:sep(58)>>>'
+# MC= MAC address
+# BI= Bytes in
+# PI= Packets in
+# EI= Errors in
+# EO= Errors out
+# BO= Bytes out
+# PO= Packets out
+# CO= Colls
+# NI= Number of interfaces
+# INTERFACES= Array of interfaces
+
+set -A INTERFACES
+set -A MC
+set -A BI
+set -A BO
+set -A PI
+set -A PO
+set -A EI
+set -A EO
+set -A CO
+
+NI=0
+# special (lo/pfsync/pflog/enc) and inactive (*) interfaces are not needed
+NETSTAT_OUTPUT=$(netstat -in | grep '<Link>' | egrep -v
"\*|lo|pfsync|enc")
+NETSTAT_OUTPUT_BYTES=$(netstat -inb | grep '<Link>' | egrep -v
"\*|lo|pfsync|enc")
+
+# adjust internal field separator to get lines from netstat and backup it before
+OFS=$IFS
+IFS='
+'
+# collect netstat values and interface number
+for NS in $NETSTAT_OUTPUT
+ do
+ NI=$(($NI+1))
+ INTERFACES[$NI]=$(echo $NS | awk '{print $1}')
+ MC[$NI]=$(echo $NS | awk '{print $4}')
+ PI[$NI]=$(echo $NS | awk '{print $5}')
+ EI[$NI]=$(echo $NS | awk '{print $6}')
+ PO[$NI]=$(echo $NS | awk '{print $7}')
+ EO[$NI]=$(echo $NS | awk '{print $8}')
+ CO[$NI]=$(echo $NS | awk '{print $9}')
+done
+
+# need NIC counter again for byte values - reset it
+NI=0
+for NS in $NETSTAT_OUTPUT_BYTES
+ do
+ NI=$(($NI+1))
+ BI[$NI]=$(echo $NS | awk '{print $5}')
+ BO[$NI]=$(echo $NS | awk '{print $6}')
+done
+
+# what is this for?
+[ "${NI}" -ge 1 ] || NI=15
+
+# jot is OpenBSD "range"
+for i in $(jot $NI)
+ do
+ echo "${INTERFACES[$i]}:${BI[$i]} ${PI[$i]} ${EI[$i]} 0 0 0 0 0 ${BO[$i]}
${PO[$i]} ${EO[$i]} 0 0 ${CO[$i]} 0 0"
+done
+
+for IF in $(jot $NI)
+ do
+ echo \[${INTERFACES[$IF]}\]
+
+ IFCONFIG_OUTPUT=$(ifconfig ${INTERFACES[$IF]})
+ for IO in $IFCONFIG_OUTPUT
+ do
+ # Speed
+ SP=$(echo "$IO" | egrep "media:.*base" | cut -d\( -f2 | cut -db
-f1)
+ if [ "$SP" ]
+ then
+ echo "\tSpeed: "$SP"Mb/s"
+ fi
+ # Detect duplexity - in reality only available for physical devices but
+ # virtual ones like CARP devices will get at least a half duplex
+ if [ "$(echo "$IO" | egrep "media:.*full-duplex")" ]
+ then
+ echo "\tDuplex: Full"
+ elif [ "$(echo "$IO" | grep "media:" | grep -v
"full-duplex")" ]
+ then
+ echo "\tDuplex: Half"
+ fi
+ # Auto-negotiation
+ if [ "$(echo "$IO" | egrep "media:.*autoselect")" ]
+ then
+ echo "\tAuto-negotiation: on"
+ elif [ "$(echo "$IO" | grep "media:" | grep -v
"autoselect")" ]
+ then
+ echo "\tAuto-negotiation: off"
+ fi
+ # Detect detected link
+ if [ "$(echo "$IO" | grep "status:" | egrep
"active|backup|master")" ]
+ then
+ echo "\tLink detected: yes"
+ fi
+ done
+
+ echo "\tAddress: "${MC[$IF]}
+
+done
+
+# reset IFS to default
+IFW=$OFS