Skip to content

Instantly share code, notes, and snippets.

@adgedenkers
Created October 11, 2012 18:16
Show Gist options
  • Star 52 You must be signed in to star a gist
  • Fork 14 You must be signed in to fork a gist
  • Save adgedenkers/3874427 to your computer and use it in GitHub Desktop.
Save adgedenkers/3874427 to your computer and use it in GitHub Desktop.
Toggle Connection to VPN on a Mac via AppleScript
tell application "System Events"
-- get current clipboard contents as a string
set CurrentClipboard to the clipboard as string
-- set the clipboad to your password
set the clipboard to "Y0urVPNPa$$w0rd"
-- start playing with the VPN
tell current location of network preferences
-- set the name of the VPN service from your Network Settings
set VPNService to service "VPN Connection 01"
-- determine current VPN connection status
set isConnected to connected of current configuration of VPNService
-- if connected, then disconnect
if isConnected then
disconnect VPNService
else -- otherwise, connect to the VPN
connect VPNService
-- wait 10 seconds before pasting in the password
delay 10
tell application id "com.apple.systemevents"
-- paste clipboard contents into password box
keystroke "v" using {command down}
-- press "Enter"
keystroke (key code 36)
-- wait 10 seconds to connect
delay 10
-- determine current VPN connection status (after providing password)
set nowConnected to connected of current configuration of VPNService
-- if we're now connected ...
if nowConnected then
-- press "Enter" again to get rid of a dialog confirmation prompt, if one exists
keystroke (key code 36)
-- now, execute any other commands you want (ping a server to check its status, open mail, etc.)
end if
end tell
end if
end tell
-- now reset the clipboard to what it was before we started
set the clipboard to CurrentClipboard
end tell
@badesemowo
Copy link

badesemowo commented Oct 6, 2020

@LwsBtlr , this is likely because you are using IKEv2 services. I had a similar issue trying to fix my VPN to auto reconnect. Below is the solution I eventually used. This may point you in the direction to solve your issue:

===
I simply downloaded the precompiled app here.
https://blog.timac.org/2018/0719-vpnstatus/

If you are interested in the source code that makes it work, you can find it on GitHub here: https://github.com/Timac/VPNStatus

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