File rtdefl.sh of Package cloud-multiroute
#!/bin/bash # Replace default route while keeping local routes via the old gateway [IPv4] # Usage: rtdefl.sh [-r|gateway [local gw]] # -r reverts to old gateway # specifying a gateway sets a new default route # (c) Kurt Garloff <t-systems@garloff.de>, 6/2018, CC-BY-SA 3 VIAFILT="s/^[^ ]* via \([^ ]*\).*$/\1/" if test "$1" == "-r"; then GW=$(ip route | grep '^192.168.0.0/16' | grep via | sed "$VIAFILT") if test -z "$GW"; then echo "ERROR: No route for 192.168/16 set" 1>&2; exit 2; fi DEF=$(ip route | grep '^default' | sed "$VIAFILT") echo "Deleting default route via $DEF ..." ip route repl default via $GW ip route del 10/8 via $GW ip route del 100.64/10 via $GW ip route del 172.16/12 via $GW ip route del 192.168/16 via $GW elif test -n "$1"; then DEF=$(ip route | grep '^default' | sed "$VIAFILT") if test -n "$2"; then DEF=$2; fi if test -z "$DEF"; then echo "ERROR: No current default route and no local GW specified" 1>&2; exit 2; fi ip route add 192.168/16 via $DEF ip route add 172.16/12 via $DEF ip route add 100.64/10 via $DEF ip route add 10/8 via $DEF ip route repl default via $1 echo "Set default route via $1, local via $DEF ..." else echo "Usage: rtdefl.sh [-r|gateway [local gw]]" 1>&2 exit 1 fi