Skip to content

Instantly share code, notes, and snippets.

@tmanternach
Last active September 26, 2024 16:09
Show Gist options
  • Save tmanternach/cbd4c213eab8569e38d6cd021b6255e5 to your computer and use it in GitHub Desktop.
Save tmanternach/cbd4c213eab8569e38d6cd021b6255e5 to your computer and use it in GitHub Desktop.
(*
Toggle GlobalProtect VPN with AppleScript
Tested using macOS Ventura 13.4.1 and GlobalProtect version 6.2.0-89
Written by Trevor Manternach, August 2023.
*)
tell application "System Events" to tell process "GlobalProtect"
click menu bar item 1 of menu bar 2
set statusText to name of static text 1 of window 1
if statusText is "Not Connected" then
# GlobalProtect is disconnected, so let's connect
click button "Connect" of window 1
set entireContents to entire contents of window 1
else if statusText is "Connected" then
# GlobalProtect is connected, so let's disconnect
set windowText to entire contents of window 1
repeat with theItem in windowText
if (class of theItem is button) then
if (value of attribute "AXTitle" of theItem is "Disconnect") then
# We found a Disconnect button on the main page, let's click it.
click theItem
exit repeat
else
# We did not find a Disconnect button on the main page, let's hope there is one in the Settings Menu.
click button "Global Protect Options Menu" of window 1
click menu item "Disconnect" of menu "Global Protect Options Menu" of button "Global Protect Options Menu" of window 1
exit repeat
end if
end if
end repeat
end if
click menu bar item 1 of menu bar 2
end tell
(*
Toggle GlobalProtect VPN with AppleScript
Tested using macOS 10.14 and GlobalProtect version 5.2.3-22
Tested using macOS Ventura 13.4.1 and GlobalProtect version 6.0.1-19
Written by Trevor Manternach, July 2021.
*)
tell application "System Events" to tell process "GlobalProtect"
click menu bar item 1 of menu bar 2 -- Activates the GlobalProtect "window" in the menubar
click button 2 of window 1 -- Clicks either Connect or Disconnect
click menu bar item 1 of menu bar 2 -- This will close the GlobalProtect "window" after clicking Connect/Disconnect. This is optional.
end tell
@nitin88
Copy link

nitin88 commented Sep 26, 2024

@tmanternach Can you actually help how to automate entering password. Typically the username is prefilled and Password is combination of static text and token (which I can get it from another automation)

Step 1: Click Connect (VPN portal is autofilled)
Step 2: Ask for Username (autofilled) and Password (the cursor highlighted by default)
Step 3: Click Connect

@tmanternach
Copy link
Author

tmanternach commented Sep 26, 2024

@tmanternach Can you actually help how to automate entering password. Typically the username is prefilled and Password is combination of static text and token (which I can get it from another automation)

Step 1: Click Connect (VPN portal is autofilled) Step 2: Ask for Username (autofilled) and Password (the cursor highlighted by default) Step 3: Click Connect

@nitin88 Have you played with this code from a previous comment?

tell application "System Events" to tell process "GlobalProtect"
	click menu bar item 1 of menu bar 2
	tell application "System Events"
		keystroke tab
		delay 0.2
		keystroke "username"
		delay 0.2
		keystroke tab
		delay 0.2
		keystroke "password"
		delay 0.2
	end tell
	click button 2 of window 1
end tell

@nitin88
Copy link

nitin88 commented Sep 26, 2024

I modified slightly to work it. One thing I am strugguling is
image

Sometimes the GP gets stuck at this. Unless I click Refresh Connection from menu bar, it won't show username/password option. Any suggestion for this to automate?

@nitin88
Copy link

nitin88 commented Sep 26, 2024

Screenshot 2024-09-26 at 9 36 41 PM

Post confirmation, it shows username/password

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