SHOW:
|
|
- or go back to the newest paste.
| 1 | #!/bin/bash | |
| 2 | REMOTE_HOST=1.2.3.4 | |
| 3 | REMOTE_COMMAND="ifconfig tun0 10.1.0.1 pointopoint 10.1.0.2 netmask 255.255.255.0; iptables -t nat -F POSTROUTING; iptables -t nat -A POSTROUTING -j MASQUERADE" | |
| 4 | ||
| 5 | LOGGER=$(which logger) | |
| 6 | if [ ! -x $LOGGER ]; then | |
| 7 | echo "logger not installed" | |
| 8 | exit 1 | |
| 9 | fi | |
| 10 | do_msg() {
| |
| 11 | echo "${0}: ${1}"
| |
| 12 | $LOGGER "${0}: ${1}" > /dev/null 2>&1
| |
| 13 | } | |
| 14 | do_abort() {
| |
| 15 | do_msg $1 | |
| 16 | exit 1 | |
| 17 | } | |
| 18 | case "${1}" in
| |
| 19 | start) | |
| 20 | ssh -vv \ | |
| 21 | -o PermitLocalCommand=yes \ | |
| 22 | -o LocalCommand="${0} dolocal" \
| |
| 23 | -o ServerAliveInterval=60 \ | |
| 24 | -w 0:0 root@$REMOTE_HOST \ | |
| 25 | '$REMOTE_COMMAND' | |
| 26 | ;; | |
| 27 | dolocal) | |
| 28 | - | OLD_DEFAULT_GW=$(ip route| egrep default | egrep -o "([12345678900]{1,3}\.*){4}")
|
| 28 | + | OLD_DEFAULT_GW=$(ip route| sed -rn 's/default via ([^ ]+).*/\1/p'") |
| 29 | ifconfig tun0 10.1.0.2 pointopoint 10.1.0.1 netmask 255.255.255.0 | |
| 30 | route add -host $REMOTE_HOST gw ${OLD_DEFAULT_GW} dev wlan0
| |
| 31 | route add default gw 10.1.0.1 dev tun0 | |
| 32 | route del default gw ${OLD_DEFAULT_GW} wlan0
| |
| 33 | /etc/firewall/firewall.sh start | |
| 34 | ;; | |
| 35 | stop) | |
| 36 | # call script to restart inet facing interfaces to reset default routes etc | |
| 37 | ;; | |
| 38 | esac | |
| 39 | exit 0 |