Skip to content

Instantly share code, notes, and snippets.

@bigonese
Created January 11, 2017 13:06
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bigonese/a3beb6e1bfb62666d8ff41d424fd4474 to your computer and use it in GitHub Desktop.
Save bigonese/a3beb6e1bfb62666d8ff41d424fd4474 to your computer and use it in GitHub Desktop.
Script to start sstp-client on a Mac, connecting to Microsoft VPN, with ability to use Apple's KeyChain
#!/bin/bash
SERVICE_NAME='my-example-vpn'
SERVICE_URL='my-example-vpn.com'
if [[ ${#USER} > 1 ]]
then
read -p "Log in as ${USER}? [y/n] " LIA
else
LIA = 'n'
fi
if [[ $LIA == 'y' ]] || [[ $LIA == 'Y' ]]
then
UN=$USER
else
read -p "VPN Username: " UN
fi
PW_KC=$(security find-generic-password -a $UN -s $SERVICE_NAME -w 2> /dev/null)
PW=''
if [[ ${#PW_KC} > 1 ]]
then
read -p "Use password from keychain? [y/n] " UPWKC
if [[ $UPWKC == 'y' ]] || [[ $UPWKC == 'Y' ]]
then
PW=$PW_KC
fi
fi
if [[ ${#PW} == 0 ]]
then
read -sp "VPN Password: " PW
echo
read -p "Store password in keychain? [y/n] " UPWKC
if [[ $UPWKC == 'y' ]] || [[ $UPWKC == 'Y' ]]
then
security add-generic-password -a $UN -s $SERVICE_NAME -w $PW
fi
fi
echo -e "\nConnecting after sudo.."
sudo sstpc --log-stderr --log-level 1 --cert-warn --user $UN --password $PW $SERVICE_URL usepeerdns require-mschap-v2 noauth noipdefault defaultroute refuse-eap noccp
@bigonese
Copy link
Author

The sstp-client package can be installed with homebrew (brew install sstp-client) or macports (port install sstp-client).

@ndedonald
Copy link

Hello @bigonese, how can I check connection status?
The script works like charm but I need a how-to, to check my connection status.

Thank you so much for this script.
You are a life saver!

@jdv85
Copy link

jdv85 commented Oct 30, 2019

@ndedonald, if you use --log-level 4 instead of --log-level 1 you will see more verbose output, which should help you see if the connection is successfully established. In my (brief) experience, sstp-client terminates when the connection is lost, so you can use that as an indication.

@yuanaw8076
Copy link

Hello @bigonese

Thank you so much for this script.
You are a life saver!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment