diff options
author | Alex Landau <alex.landau@xorcom.com> | 2008-12-08 10:54:46 +0000 |
---|---|---|
committer | Alex Landau <alex.landau@xorcom.com> | 2008-12-08 10:54:46 +0000 |
commit | 9489a7eeeae753b144db0382423c432c0b4f960e (patch) | |
tree | 93a4a3768d471527af1a2bb1d23746e336a89441 /rapid-tunneling-status | |
parent | 817f3069a8eb684675d266d4b95aa0bb1a4de9ff (diff) |
rapid-tunneling:
- Added status checker.
- Tunnel is backgrounded with start-stop-daemon.
git-svn-id: svn+ssh://xorcom/home/svn/debs/components/rapid-tunneling@6438 283159da-0705-0410-b60c-f2062b4bb6ad
Diffstat (limited to 'rapid-tunneling-status')
-rwxr-xr-x | rapid-tunneling-status | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/rapid-tunneling-status b/rapid-tunneling-status new file mode 100755 index 0000000..e270ea1 --- /dev/null +++ b/rapid-tunneling-status @@ -0,0 +1,58 @@ +#!/bin/sh + +if [ "$1" = "--help" ]; then + echo "Usage: $0 [-p] [<pid-file>]" 1>&2 + echo " -p: Print only pid of SSH process (if connecting or connected)." 1>&2 + echo " Otherwise, print status" 1>&2 + echo " Exit code: 0 if connected, 1 if connecting, 2 if not connected." 1>&2 + echo " $0 -s [<pid-file>]" 1>&2 + echo " -s: Stop the tunnel" 1>&2 + exit 255 +fi + +if [ "$1" = "-p" ]; then + showpid=1 + shift +elif [ "$1" = "-s" ]; then + stop=1 + shift +fi +pidfile="$1" +[ -z "$pidfile" ] && pidfile="$HOME/pid" + +connected() +{ + [ "$showpid" = 1 ] && echo $pid || echo "Connected" + exit 0 +} + +connecting() +{ + [ "$showpid" = 1 ] && echo $pid || echo "Connecting" + exit 1 +} + +not_connected() +{ + [ "$showpid" = 1 ] || echo "Not connected" + exit 2 +} + +stop_it() +{ + kill $pid 2>/dev/null + exit 0 +} + +pid=`cat "$pidfile" 2>/dev/null` +[ "$pid" ] || not_connected +kill -s 0 $pid 2>/dev/null || not_connected +for i in /proc/$pid/fd/*; do + socket=`readlink $i 2>/dev/null | sed -n 's/^socket:\[\(.*\)\]$/\1/p'` + [ "$socket" ] || continue + state=`awk '$10 == '"$socket"' {print $4}' /proc/net/tcp` + [ "$state" ] || continue + [ "$stop" = 1 ] && stop_it + [ "$state" = "01" ] && connected || connecting +done +not_connected |