#!/bin/sh TestHosts="4.2.2.4 8.8.8.8" PingTrials=2 iftest () { ifconfig $1 2>/dev/null | grep -q RUNNING } pingtest () { # TODO: replace with something parallel for i in $(seq 1 $PingTrials); do for h in $2; do ping -c 1 -w 5 -I $1 $h &>/dev/null if [ $? -eq 0 ]; then exit 0; fi done done } case "$1" in internet) iftest eth1 && pingtest eth1 $TestHosts ;; vpn) iftest tun0 && pingtest tun0 $TestHosts ;; *) echo "Usage: $0 " >&2 ;; esac exit 1