Last active
August 29, 2015 14:07
-
-
Save underscorephil/67dfbe052cfda5d23903 to your computer and use it in GitHub Desktop.
bash script for managing ssh tunnel and proxy settings for osx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Set me to your SSH server hostname or IP | |
host="example.com" | |
# Enable the Proxy location and open a tunnel if needed | |
if [ "$1" = "on" ] | |
then | |
# Check if there is an existing SSH connection...we don't want to go making | |
# unnecessary ones. | |
if [ -n "$(/bin/ps ax | /usr/bin/grep "ssh.$host" | /usr/bin/grep -v grep)" ] | |
then | |
echo "Connection open" | |
else | |
echo "Connection not open\n" | |
# If there is no connection open a tunnel | |
nohup /usr/bin/ssh -fN -C -D 8888 "$host" & | |
fi | |
# We switch to the Proxy location regardless of a new or pre-existing tunnel | |
networksetup -switchtolocation Proxy | |
# Switch to the Home location | |
elif [ "$1" = "off" ] | |
then | |
networksetup -switchtolocation Home | |
# Destory the tunnel connections...as well as all SSH connections, cause lazy | |
elif [ "$1" = "kill" ] | |
then | |
killall -9 ssh | |
# Show the status of the tunnel and location setting | |
elif [ "$1" = "status" ] | |
then | |
if [ -n "$(/bin/ps ax | /usr/bin/grep "ssh.*$host" | /usr/bin/grep -v grep)" ] | |
then | |
echo "Tunnel: open" | |
else | |
echo "Tunnel: closed" | |
fi | |
echo "Location: `networksetup -getcurrentlocation`" | |
else | |
# Helptext when no arg is supplied | |
echo "tunnel [on/off/kill]" | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment