#!/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) IFace=$(uci get network.wan.ifname) ;; vpn) IFace=tun0 ;; *) echo "Usage: $0 " >&2 exit 1 ;; esac iftest $IFace && pingtest $IFace $TestHosts exit 1