diff --git a/path-loss.sh b/path-loss.sh index 32c74f0..0ef5ca6 100644 --- a/path-loss.sh +++ b/path-loss.sh @@ -17,27 +17,52 @@ nodes=( \ ) # local variables -cntFailures=0 -status="" +cntNotify=0 +status="|" tmpLog=$(mktemp) tmpPing=$(mktemp) # preload output date > ${tmpLog} -# loop through nodes nd test +# loop through nodes and test for node in ${!nodes[*]}; do echo -e ${txtSeparator} >> ${tmpLog}; echo "checking node ${nodes[${node}]}:" >> ${tmpLog}; echo "" >> ${tmpLog} + ping -W 1 -c ${nAttempts} ${node} > ${tmpPing} cat ${tmpPing} >> ${tmpLog} + value=$(grep transmitted ${tmpPing} | cut -d ' ' -f 4) - if [[ nTrigger -ge value ]]; then - ((cntFailures++)); - mtr -w -b --report ${node} >> ${tmpLog}; - status="${status} ${nodes[${node}]}" + if [[ nTrigger -ge value ]]; then flagNxt="dn" + else flagNxt="up"; fi + + flagPrv="na" + + if [[ -f /tmp/pl.dn.${node} ]]; then + flagPrv="dn" + if test "up" = "${flagNxt}"; then + rm /tmp/pl.dn.${node} + fi fi + + if [[ -f /tmp/pl.up.${node} ]]; then + flagPrv="up" + if test "dn" = "${flagNxt}"; then + rm /tmp/pl.up.${node} + fi + fi + + if test "${flagPrv}" != "${flagNxt}"; then + touch /tmp/pl.${flagNxt}.${node} + ((cntNotify++)); + mtr -w -b --report ${node} >> ${tmpLog}; + status="${status} ${nodes[${node}]} ${flagPrv}>${flagNxt} |" + echo "" >> ${tmpLog} + echo "Above State Change: ${flagPrv}>${flagNxt}" >> ${tmpLog} + fi + done # footer @@ -45,7 +70,7 @@ echo -e ${txtSeparator} >> ${tmpLog}; date >> ${tmpLog} # notify on failure -if [[ cntFailures -gt 0 ]]; then +if [[ cntNotify -gt 0 ]]; then cat ${tmpLog} | mail -s "${txtSubject}:${status}" ${txtEmail}; fi