Skip to content

Instantly share code, notes, and snippets.

@adgedenkers
Created October 11, 2012 18:16
Show Gist options
  • 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
@NReilingh
Copy link

@tuxian0 If you're using the Cisco AnyConnect client then none of this will work. You could try scripting the Cisco client directly, or see if your VPN configuration can be redone with the native macOS VPN client, configured in System Preferences -> Network.

@LwsBtlr
Copy link

LwsBtlr commented Sep 6, 2020

Either this doesn’t work in 10.15 or it doesn’t work with the NordVPN IKE client. Iot doesn’t show up in the scutil —nc list command

@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