summaryrefslogtreecommitdiff
path: root/localautoautossh
diff options
context:
space:
mode:
authorroot <root@hello.jones.dk>2010-09-20 15:25:07 +0200
committerroot <root@hello.jones.dk>2010-09-20 15:25:07 +0200
commit19812949f893bc516949264803d94978ea17b6f5 (patch)
tree063aea0779441dba3d9dbd22ad16ff7379f552bd /localautoautossh
parenta16a27a5043ee466e063f63650e70aac89a4db39 (diff)
Add localautoautossh to auto-keepalive an autossh keepalive daemon.
Diffstat (limited to 'localautoautossh')
-rwxr-xr-xlocalautoautossh43
1 files changed, 43 insertions, 0 deletions
diff --git a/localautoautossh b/localautoautossh
new file mode 100755
index 0000000..b669e1d
--- /dev/null
+++ b/localautoautossh
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+# Wrapper around autossh to always keep open ssh and web tunnels
+# Usable as cronjob and ifup hook
+
+set -e
+
+DEFAULTS=/etc/local/autoautossh
+DAEMON=/usr/bin/autossh
+
+# Set defaults
+DEFAULTLOCALUSER=autossh
+DEFAULTLOCALIFACE=eth0
+DEFAULTREMOTEHOST=defaultserver
+DEFAULTREMOTESSHPORT=2200
+DEFAULTREMOTEHTTPPORT=2280
+
+# Check for daemon presence
+[ -x "$DAEMON" ] || exit 0
+
+# Include config defaults if available
+[ -r "$DEFAULTS" ] && . "$DEFAULTS"
+
+# allow overriding these in environment
+LOCALUSER=${LOCALUSER:-$DEFAULTLOCALUSER}
+LOCALIFACE=${LOCALIFACE:-$DEFAULTLOCALIFACE}
+REMOTEHOST=${REMOTEHOST:-$DEFAULTREMOTEHOST}
+REMOTESSHPORT=${REMOTESSHPORT:-$DEFAULTREMOTESSHPORT}
+REMOTEHTTPPORT=${REMOTEHTTPPORT:-$DEFAULTREMOTEHTTPPORT}
+
+
+# ifup hack: Ignore ifup'ing irrelevant interfaces (including loopback)
+# Unset LOCALIFACE to always continue
+[ -z "$LOCALIFACE" ] || [ -z "$IFACE" ] || [ "$IFACE" = eth0 ] || exit 0
+
+# Back out if possible to reach ourselves from outside
+! su "$LOCALUSER" -c "ssh '$REMOTEHOST' -- ssh -C -o ConnectTimeout=5 -o ConnectionAttempts=3 -p '$REMOTESSHPORT' localhost -- true" || exit 0
+
+# SSH tunnel is broken - establish fresh tunnels
+killall autossh || true
+su "$LOCALUSER" -c "autossh -fN -M 0 -o BatchMode=yes -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -R '$REMOTESSHPORT':localhost:22 -R '$REMOTEHTTPPORT':localhost:80 '$REMOTEHOST'" &
+
+exit 0