diff --git a/nagios/check_glue_records.sh b/nagios/check_glue_records.sh deleted file mode 100755 index 65f67d4..0000000 --- a/nagios/check_glue_records.sh +++ /dev/null @@ -1,150 +0,0 @@ -#!/bin/sh - -# Small script to check that all servers behind the glue records : -# - are reachable (IPv4 and IPv6 alike), -# - show the same SOA record. -# GPL v3+ - -# Stop at the first non-catched error -set -e - -# For monitoring plugins -PROGPATH=$( echo $0 | sed -e 's,[\\/][^\\/][^\\/]*$,,' ) -REVISION="0.1" - -# Include check_range() -#. $PROGPATH/utils.sh -# No need for check_range() at the moment, we just copy -# the states to be standalone (easier to use that way) -STATE_OK=0 -STATE_WARNING=1 -STATE_CRITICAL=2 -STATE_UNKNOWN=3 -STATE_DEPENDENT=4 - -# Defaults -CHECK_SOA=1 - -# Output -OUTPUT_EXIT_STATUS=$STATE_OK -OUTPUT_DETAIL_OK="" -OUTPUT_DETAIL_WARNING="" -OUTPUT_DETAIL_CRITICAL="" -#OUTPUT_PERFDATA="" - -# -# Help function -# -usage() { - cat </dev/null 2>&1 ; then - echo "UNKNOWN 'dig' not found" - exit $STATE_UNKNOWN -fi - -# We loop until there is no more parameters, be it -# either options or domains -while [ "$#" -gt 0 ]; do - # Parameters management - while getopts hsS OPT; do - case "$OPT" in - 'h') - usage - exit - ;; - - 's') - CHECK_SOA=0; - ;; - - 'S') - CHECK_SOA=1; - ;; - - \?) - usage - exit 1 - ;; - esac - done - shift $( expr $OPTIND - 1 ) - DOMAIN="$1" - shift - - # Exit if no domain has been specified - # (it's kind of weird and I don't like it) - if [ -z "$DOMAIN" ]; then - echo "UNKNOWN: no domain tested." - exit $STATE_UNKNOWN - fi - - # Get the TLD of the domain (example.net -> net) - TLD="$( echo "$DOMAIN" | sed 's/[^.]*\.\([^.]\)/\1/' )" - # ...and get one random server for this TLD - NS_TLD="$( dig +short "$TLD" NS | sort -R | tail -n 1 )" - - # Query this TLD server on our domain and loop on each IP address "additionally" - # given, aka. the glue records - LIST_IP_NS_SERVERS="$( dig +norec +nocomments +noquestion +nostats +nocmd @"$NS_TLD" "$DOMAIN" NS | sed -n 's/.*IN[[:space:]]\+\(A\|AAAA\)[[:space:]]\+\(.*\)$/\2/p' )" - if [ -z "$LIST_IP_NS_SERVERS" ] && [ "$OUTPUT_EXIT_STATUS" -ne "$STATE_CRITICAL" ]; then - OUTPUT_EXIT_STATUS=$STATE_WARNING - OUTPUT_DETAIL_WARNING="$OUTPUT_DETAIL_WARNING No glue records for domain $DOMAIN ?" - continue - fi - for IPADDR in $LIST_IP_NS_SERVERS; do - # Query our server - OUTPUT=$( dig @"$IPADDR" $DOMAIN SOA +short 2>&1 ) - if [ "$?" -eq 0 ]; then - # The server responded, store the SOA for later analyze - LIST_SOA="$( printf "%s\n%s" "$LIST_SOA" "$OUTPUT" | grep -v "^$" )" - else - # No response ? - if [ "$OUTPUT_EXIT_STATUS" -ne $STATE_CRITICAL ]; then - OUTPUT_DETAIL_CRITICAL="Problematic server behind IP" - OUTPUT_EXIT_STATUS=$STATE_CRITICAL - fi - OUTPUT_DETAIL_CRITICAL="$OUTPUT_DETAIL_CRITICAL $IPADDRESS" - fi - done - - # Check that SOA records are all the same - if [ "$CHECK_SOA" -ne 0 ] && [ "$OUTPUT_EXIT_STATUS" -ne "$STATE_CRITICAL" ] && [ "$( echo "$LIST_SOA" | uniq | wc -l )" -ne 1 ]; then - OUTPUT_EXIT_STATUS=$STATE_WARNING - OUTPUT_DETAIL_WARNING="$OUTPUT_DETAIL_WARNING SOA records discrepancies for domain $DOMAIN : $LIST_SOA" - fi - - # Clean up after each domain - unset LIST_SOA - OUTPUT_DETAIL_OK="$OUTPUT_DETAIL_OK $DOMAIN" -done - -case "$OUTPUT_EXIT_STATUS" in - '0') - printf "OK%s" "$OUTPUT_DETAIL_OK" - ;; - '1') - printf "WARNING %s" "$OUTPUT_DETAIL_WARNING" - ;; - '2') - printf "CRITICAL %s" "$OUTPUT_DETAIL_CRITICAL" - ;; - *) - printf "UNKNOWN" - ;; -esac - -# Perfdata -#printf "|%s\n" "$OUTPUT_PERFDATA" -printf "\n" - -# Exit with return status -exit $OUTPUT_EXIT_STATUS diff --git a/script_debit.sh b/script_debit.sh new file mode 100755 index 0000000..e43a664 --- /dev/null +++ b/script_debit.sh @@ -0,0 +1,30 @@ +#!/bin/sh + +# Ce script donne la volumétrie d'une interface réseau à intervalle régulier +# (se base sur /proc/net/dev) + +FICHIER_PROC=/proc/net/dev +INTERFACE="eth0" +DELAI="10" + +OLD_VOLUME_IN=0 +OLD_VOLUME_OUT=0 +VOLUME_IN=0 +VOLUME_OUT=0 + +while true ; do + VOLUME_IN=$( cat "$FICHIER_PROC" | grep "$INTERFACE:" | sed 's/^[[:space:]]*eth0:\([[:digit:]]\+\)[[:space:]]\+.*/\1/' ) + VOLUME_OUT=$( cat "$FICHIER_PROC" | grep "$INTERFACE:" | sed 's/^[[:space:]]*eth0:\([[:digit:]]\+[[:space:]]\+\)\{8\}\([[:digit:]]\+\)[[:space:]]\+.*/\2/' ) + + if [ "$OLD_VOLUME_IN" -eq "0" ] ; then + echo "Please wait..." + else + printf "%s: %10d o/s reception, %10d o/s emission\n" "$INTERFACE" $(( ( $VOLUME_IN - $OLD_VOLUME_IN ) / $DELAI )) $(( ( $VOLUME_OUT - $OLD_VOLUME_OUT ) / $DELAI )) + fi + + OLD_VOLUME_IN=$VOLUME_IN + OLD_VOLUME_OUT=$VOLUME_OUT + + sleep "$DELAI" +done + diff --git a/script_debit2.sh b/script_debit2.sh deleted file mode 100755 index 24d3f0f..0000000 --- a/script_debit2.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/bin/sh - -# Ce script donne la volumétrie d'une interface réseau à intervalle régulier -# (se base sur /proc/net/dev) - -FICHIER_PROC=/proc/net/dev -DELAI="1" - -# Try to get a pretty formatter -FORMATTER="cat -" -if which numfmt >/dev/null 2>&1; then - FORMATTER="numfmt --field 2-3 --to si --padding 7" -fi - -# Factorize the parsing -getdata() { - cat "$1" | sed -e '1d;2d' -e 's/^[[:space:]]*//' -e 's/[[:space:]]\+/ /g' | cut -f 1,2,10 -d " " -} - -# First grab -OLDDATA="$( getdata "$FICHIER_PROC" )" - -while sleep "$DELAI" ; do - NEWDATA="$( getdata "$FICHIER_PROC" )" - - # header - printf "\n% 15s\t% 6s\t% 6s\n" " " "IN" "OUT" - - echo "$NEWDATA" | while read INTERFACE VOLUME_IN VOLUME_OUT; do - # Again, scope issues with read and pipes so we make a one-time loop :) - echo "$OLDDATA" | grep "$INTERFACE" | while read DUMP OLD_VOLUME_IN OLD_VOLUME_OUT; do - VOLUME_IN="$(( $VOLUME_IN - $OLD_VOLUME_IN ))" - VOLUME_OUT="$(( $VOLUME_OUT - $OLD_VOLUME_OUT ))" - printf "% 15s\t%d\t%d\n" "$INTERFACE" "$VOLUME_IN" "$VOLUME_OUT" | $FORMATTER - done - done - - OLDDATA="$NEWDATA" -done