#!/bin/bash

ipaddr() {
	local dev="$1"
	ip addr show $dev | perl -ne 'm{inet ([^ /]*)} && print "$1\n"'
}

CHECKEVERY=20

INTERFACES="$*"
if [ -z "$INTERFACES" ]; then
	INTERFACES="wlan0 ppp0"
fi

while true; do

	TIMEUNIX=`date +%s`

	sleep $[ $CHECKEVERY - $TIMEUNIX  % $CHECKEVERY ]

	TIME=`date +%Y%m%d_%H%M%S`

	TIMEOUT=8

	for IF in $INTERFACES; do

		IP=`ipaddr $IF`

		echo -n "$TIME"$'\t'"$IF"$'\t'

		if [ -z "$IP" ]; then
			echo 'down'
		elif ping -I$IF -c1 -w$TIMEOUT nipl.net >/dev/null 2>&1; then
			echo 'up'
		else
			echo 'borken'
		fi

	done

done | tee -a ifupmon.log
