LibrePlanet: Conference/2023/Streaming/flip-network.sh

From LibrePlanet
Jump to: navigation, search
#! /bin/bash

set -e

server_ip="209.51.188.57/32"

wifi_dev="$(ip route | grep "^default" | grep "dev wl"       | head -1 | grep -o "dev [^ ]*" | sed -e "s/dev //")"
eth_dev="$(ip route  | grep "^default" | grep "dev [en|eth]" | head -1 | grep -o "dev [^ ]*" | sed -e "s/dev //")"

wifi_via="$(ip route | grep "^default" | grep "dev wl"       | head -1 | grep -o "via [^ ]*" | sed -e "s/via //")"
eth_via="$(ip route  | grep "^default" | grep "dev [en|eth]" | head -1 | grep -o "via [^ ]*" | sed -e "s/via //")"

if [[ $# -ne 1 ]] || ([[ $1 != "-w" ]] && [[ $1 != "-c" ]]) ; then
	echo "flip-networks.sh: (change routing to live-master.fsf.org between wifi and ethernet)"
	echo "usage: $0 [-c|-w]" >&2
	echo "       -c: use ethernet" >&2
	echo "       -w: use wifi" >&2
	exit 1
fi

if [[ $1 == "-w" ]] ; then
	ip route del "$server_ip" via "$eth_via" dev "$eth_dev" || echo "no eth route to delete" >&2
	ip route add "$server_ip" via "$wifi_via" dev "$wifi_dev" || echo "already routing by wifi" >&2
	echo
	echo "routing by wifi" >&2

elif [[ $1 == "-c" ]] ; then
	ip route del "$server_ip" via "$wifi_via" dev "$wifi_dev" || echo "no wifi route to delete" >&2
	ip route add "$server_ip" via "$eth_via" dev "$eth_dev" || echo "already routing by eth" >&2
	echo
	echo "routing by ethernet" >&2
fi