Skip to content

Instantly share code, notes, and snippets.

@mattjj
Created September 11, 2012 14:35
Show Gist options
  • Save mattjj/3699175 to your computer and use it in GitHub Desktop.
Save mattjj/3699175 to your computer and use it in GitHub Desktop.
OS X tunnelr script
#!/bin/bash -e
USERNAME=mitmatt
NODE=seattle
INTERFACE=AirPort
LOCAL_PORT=1080
CONTROL_SOCKET=~/.ssh/control-tunnelr
CONNECT_COMMAND=connect
DISCONNECT_COMMAND=disconnect
CONFIG_FILE_COMMENT='auto-added by tunnelr script'
usage()
{
echo "usage: ${0##*/} {${CONNECT_COMMAND}|${DISCONNECT_COMMAND}}"
}
if [ $# != 1 ]
then
usage
exit 0
fi
if [ ! -e ~/.ssh/config ] || ! grep -q "${CONFIG_FILE_COMMENT}" ~/.ssh/config
then
mkdir -p ~/.ssh
cat >> ~/.ssh/config << EOF
# ${CONFIG_FILE_COMMENT}
Host *.tunnelr.com
ControlMaster auto
EOF
fi
case "$(echo $1 | tr [:upper:] [:lower:])" in
${CONNECT_COMMAND:0:${#1}})
echo "setting SOCKS proxy to ${NODE}.tunnelr.com..."
networksetup -setsocksfirewallproxy ${INTERFACE} 127.0.0.1 ${LOCAL_PORT} off
ssh "${USERNAME}@${NODE}.tunnelr.com" -S ${CONTROL_SOCKET} -f -p 22 -N -D localhost:${LOCAL_PORT}
;;
${DISCONNECT_COMMAND:0:${#1}})
echo "disconnecting SOCKS proxy from ${NODE}.tunnelr.com..."
if [ -e ${CONTROL_SOCKET} ]
then
ssh -S ${CONTROL_SOCKET} -O exit localhost
else
echo "WARNING: could not find control socket; no ssh processes killed" > /dev/stderr
fi
networksetup -setsocksfirewallproxystate ${INTERFACE} off
;;
*)
usage
exit 1
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment