freifunk-gwcheck: make it more readeable and make compat with smaler ip version without short forms

This commit is contained in:
Patrick Grimm 2013-08-17 18:33:07 +00:00
parent f496c67d25
commit db26a0c7d0

View file

@ -23,8 +23,8 @@ if [ ${#pid} -gt 5 ]; then
fi fi
# exit if there is no defaultroute with metric=0 in main or gw-check table. # exit if there is no defaultroute with metric=0 in main or gw-check table.
defroutemain="$(ip r s |grep default |grep -v metric)" defroutemain="$(ip route show |grep default |grep -v metric)"
defroutegwcheck="$(ip r s t gw-check |grep default |grep -v metric)" defroutegwcheck="$(ip route show table gw-check |grep default |grep -v metric)"
if [ -z "$defroutegwcheck" -a -z "$defroutemain" ]; then if [ -z "$defroutegwcheck" -a -z "$defroutemain" ]; then
exit 1 exit 1
fi fi
@ -84,37 +84,37 @@ iw=$(check_internet)
if [ "$iw" == 0 ]; then if [ "$iw" == 0 ]; then
# Internet available again, restore default route and remove ip rules # Internet available again, restore default route and remove ip rules
if [ -n "$defroutegwcheck" ]; then if [ -n "$defroutegwcheck" ]; then
ip r a $defroutegwcheck ip route add $defroutegwcheck
ip r d $defroutegwcheck t gw-check ip route del $defroutegwcheck table gw-check
for host in $testserver; do for host in $testserver; do
ips="$(resolve $host)" ips="$(resolve $host)"
for ip in $ips; do for ip in $ips; do
[ -n "$(ip ru s | grep "to $ip lookup gw-check")" ] && ip rule del to $ip table gw-check [ -n "$(ip rule show | grep "to $ip lookup gw-check")" ] && ip rule del to $ip table gw-check
done done
done done
get_dnsservers get_dnsservers
for d in $dns; do for d in $dns; do
[ -n "$(ip ru s | grep "to $d lookup gw-check")" ] && ip rule del to $d table gw-check [ -n "$(ip rule show | grep "to $d lookup gw-check")" ] && ip rule del to $d table gw-check
done done
logger -p err -t gw-check "Internet is available again, default route restored ( $defroutegwcheck)" logger -p err -t gw-check "Internet is available again, default route restored ( $defroutegwcheck)"
fi fi
else else
# Check failed. Move default route to table gw-check and setup ip rules. # Check failed. Move default route to table gw-check and setup ip rules.
if [ -z "$(ip ru s | grep gw-check)" -a -n "$defroutemain" ]; then if [ -z "$(ip rule show | grep gw-check)" -a -n "$defroutemain" ]; then
ip r a $defroutemain table gw-check ip route add $defroutemain table gw-check
ip r d $defroutemain ip route del $defroutemain
logger -p err -t gw-check "Internet is not available, default route deactivated ( $defroutemain)" logger -p err -t gw-check "Internet is not available, default route deactivated ( $defroutemain)"
fi fi
for host in $testserver; do for host in $testserver; do
ips="$(resolve $host)" ips="$(resolve $host)"
for ip in $ips; do for ip in $ips; do
[ -z "$(ip ru s | grep "to $ip lookup gw-check")" ] && ip rule add to $ip table gw-check [ -z "$(ip rule show | grep "to $ip lookup gw-check")" ] && ip rule add to $ip table gw-check
done done
done done
get_dnsservers get_dnsservers
for d in $dns; do for d in $dns; do
[ -z "$(ip ru s | grep "to $d lookup gw-check")" ] && ip rule add to $d table gw-check [ -z "$(ip rule show | grep "to $d lookup gw-check")" ] && ip rule add to $d table gw-check
done done
logger -p err -t gw-check "Check your internet connection!" logger -p err -t gw-check "Check your internet connection!"
fi fi