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
openSUSE Build Service is sponsored by