#! /bin/bash #: Title: monitor.sh #: Date: 28.01.2015 #: Author: Falko Benthin #: Version: 1.0 #: Desciption: Sends SNMP requests to individual APs/routers and logs the output with timestamps for evaluation later #: Options: none # sends snmp requests to individual hosts function checkMachines() { # ipNetToMediaPhysAddress snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.4.22.1.3 # memory_used snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.25.2.3.1.6.101 # CPU-load-1 snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST 1.3.6.1.4.1.2021.10.1.5.1 # CPU-load-5 snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST 1.3.6.1.4.1.2021.10.1.5.2 # CPU-load-15 snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.4.1.2021.10.1.5.3 # wlan_clients snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.4.1.2021.255.3.54.1.3.32.1.4 # ifInOctets snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.10 # ifInUcastPkts snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.11 # ifInDiscards snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.13 # ifInErrors snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.14 # ifOutOctets snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.16 # ifOutUcastPkts snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.17 # ifOutDiscards snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.19 # ifOutErrors snmpwalk -v1 -Oqs -c $ROCOMMUNITY $HOST .1.3.6.1.2.1.2.2.1.20 } # Directory for logfiles LOGDIR="/home/falko/monitorlog" # community string ROCOMMUNITY="community" # date YEAR=$( date +%Y ) MONTH=$( date +%m ) DAY=$( date +%d ) while read HOST DESC do DATEDIR=$LOGDIR/$YEAR/$MONTH/$DAY # Directory for date if [ ! -d $DATEDIR ]; then mkdir -p $DATEDIR fi # check if host is reachable if ! ping -c3 $HOST > /dev/null; then if [ ! -e $LOGDIR/$HOST.lastmail.log ] || [ ! $( date -d @$( cat $LOGDIR/$HOST.lastmail.log ) +%d ) = $DAY ] then printf "The AP/Router %s, %s is not reachable. Please check." $HOST "$DESC" | mail -s "Check AP/Router" recp1@samplemail.org recp2@samplemail.org recp3@samplemail.org echo $( date +%s ) > $LOGDIR/$HOST.lastmail.log fi else # SMTP-Checks and Logging checkMachines | while read OUTPUT do printf "%s %s\n" $( date +%T ) "$OUTPUT" >> $DATEDIR/$HOST.log done fi done < machines.txt exit 0