| #!/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 |