#!/bin/bash |
|
# Packets Loss Watch |
|
# Simple SHELL script for Linux and UNIX system monitoring with |
|
# ping command |
|
# |
|
# Copyright (c) 2006 nixCraft project <http://www.cyberciti.biz/fb/> |
|
# Copyleft 2013 Stephen Larroque |
|
# This script is licensed under GNU GPL version 2.0 or above |
|
# |
|
# This script was inspired by a nixCraft script http://www.cyberciti.biz/tips/simple-linux-and-unix-system-monitoring-with-ping-command-and-scripts.html |
|
# |
|
# For more complex needs, take a look at: |
|
# - SmokePing: http://oss.oetiker.ch/smokeping/ |
|
# - DropWatch: http://humblec.com/dropwatch-to-see-where-the-packets-are-dropped-in-kernel-stack/ |
|
# - sjitter: http://www.nicolargo.com/dev/sjitter/ |
|
# - iperf: http://iperf.fr/ |
|
# ------------------------------------------------------------------------- |
|
|
|
#=== PARAMETERS change them here |
|
# add ip / hostname separated by while space |
|
HOSTS="www.google.com" |
|
# no ping request |
|
COUNT=20 |
|
# email report when |
|
#SUBJECT="Ping failed" |
|
#EMAILID="me@mydomain.com" |
|
|
|
#=== Local vars (do not change them) |
|
# Cron-friendly: Automaticaly change directory to the current one |
|
cd $(dirname "$0") |
|
|
|
# Current script filename |
|
SCRIPTNAME=$(basename "$0") |
|
|
|
# Current date and time |
|
today=$(date '+%Y-%m-%d') |
|
currtime=$(date '+%H:%M:%S') |
|
|
|
#=== Help message |
|
if [[ "$@" =~ "--help" ]]; then |
|
echo "Usage: bash $SCRIPTNAME |
|
Check the rate of packets loss and output the result in a file named plwatch.txt in the same directory as this script. |
|
Note: this script is cron-friendly, so you can add it to a cron job to regularly check your packets loss. |
|
" |
|
exit |
|
fi |
|
|
|
#=== Main script |
|
for myHost in $HOSTS |
|
do |
|
msg=$(ping -c $COUNT $myHost | grep 'loss') |
|
echo "[$today $currtime] ($myHost $COUNT) $msg" >> plwatch.txt |
|
#count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | awk '{ print $1 }') |
|
#if [ $count -eq 0 ]; then |
|
# 100% failed |
|
# echo "Host : $myHost is down (ping failed) at $(date)" | mail -s "$SUBJECT" $EMAILID |
|
#fi |
|
done |