#!/bin/sh
# $Id: linkcheck,v 1.37 2021/02/11 01:44:45 grog Exp $
#
# Check network connectivity at regular intervals.
SYSTEMS="freefall www ffm ozlabs.org ftp.netbsd.org"
NSYS=5
if [ "$1" != "" ]; then
  LINKSTATS=$1
else
  LINKSTATS=/home/grog/public_html/net/nbnlinkstats
fi
# This should be the other end of the NBN link
NEXTHOP=121.200.8.1
while :; do
  SPEED=0
  /home/grog/bin/tcpcheck &
  PINGED=`ping -i 0.01 -c 100 $NEXTHOP`
  SPEED=`echo $PINGED | awk -F/ -f ~grog/bin/pingbadness.awk`
  TIME=`echo $PINGED | sed 's:.*stddev =::; s:/.*: ms:'`
  LOSS=`echo $PINGED | sed 's:%.*::; s:.*, ::'`
  if [ "$SPEED" = "" ]; then
    SPEED=0
  fi
  if [ "$SPEED" = 0 ]; then
    TIME=
  fi
  # Sometimes, it seems, ping doesn't return !0 on error
  REMOTE=0
  BADLIST=
  for i in $SYSTEMS; do
    if ping -c 1 $i >/dev/null 2>&1; then
      REMOTE=`expr $REMOTE + 1`
    else
      BADLIST="$BADLIST $i"
    fi
  done
echo `date +%s` $SPEED $REMOTE $LOSS $BADLIST '	#' `date`  $TIME >> $LINKSTATS
if [ $REMOTE -eq $NSYS ]; then
 sleep 58			# makes up to approximately 60 seconds
else
  sleep 1
fi
done
