如何通过AppleScript获得IKEv2 VPN连接?

时间:2016-08-23 02:53:30

标签: applescript vpn

有没有人在使用IKEv2网络服务时遇到AppleScript?

在El Capitan,我可以创建一个IKEv2 VPN连接并正确连接。但AppleScript不能使用这种连接/服务,它无法获取名称服务,也无法列出服务的连接。

tell application "System Events"
   tell current location of network preferences
      set service_name to "IKEv2_connection_name"
      do shell script (do shell script "scutil --nc start \"" & service_name & "\"")
   end tell
end tell

这是错误:

error "System Events got an error: No service" number 1

AppleScript似乎无法识别IKEv2 VPN连接。所以我试着运行另一个脚本来打印出系统中所有当前的互联网连接:

tell application "System Events"
   tell current location of network preferences
      set names to get name of every service
   end tell
end tell

结果显示所有网络连接(包括" Wi-Fi"," USB以太网","蓝牙PAN"," Thunderbolt Bridge&# 34;,L2TP,PTPP,IPSec类型的所有VPN连接,但它没有列出任何IKEv2连接,虽然我已经设置了一些,但它们都在工作。

3 个答案:

答案 0 :(得分:1)

我能够使用UI脚本来实现这一点。到目前为止,这个脚本似乎运行良好,我认为我已尽可能使用户友好。它需要始终打开“系统偏好设置”,但可以隐藏窗口。如果在脚本启​​动时关闭“系统偏好设置”,脚本将启动,然后自动隐藏“系统偏好设置”。主要不便之处在于,在脚本运行时,“系统偏好设置”基本上锁定在“网络”窗格中。请随意尝试一下,如果您有任何问题或建议请告诉我!您需要更换我的VPN服务名称"使用您希望保持连接的VPN服务的名称。您可能还想修改底部的延迟。

repeat while true
tell application "System Events"
    tell application process "System Preferences"
        if not (window 1 exists) then
            tell application "System Preferences"
                activate
            end tell
            repeat while not (menu bar 1 exists)
            end repeat
            repeat while not (menu "System Preferences" of menu bar 1 exists)
            end repeat
            repeat while not (menu item "Hide System Preferences" of menu "System Preferences" of menu bar 1 exists)
            end repeat
            delay 3
            click menu item "Hide System Preferences" of menu "System Preferences" of menu bar 1
        end if

        click menu item "Network" of menu "View" of menu bar 1

        tell window 1
            repeat while not (rows of table 1 of scroll area 1 exists)
            end repeat
            repeat with current_row in (rows of table 1 of scroll area 1)
                if value of static text 1 of current_row contains "MY VPN SERVICE NAME" then
                    select current_row
                    exit repeat
                end if
            end repeat

            repeat with current_button in (buttons in group 1)
                if name of current_button is equal to "Connect" then
                    click current_button
                    exit repeat
                end if
            end repeat
        end tell
    end tell
end tell
delay 60
end repeat

答案 1 :(得分:0)

有一些关于此的报告,似乎是在OSX 10.10中制作的AppleScript中的一些更改,它停止连接对象中的服务以列出IKEv2 VPN。

你走在正确的道路上,只是没有使用位置:

tell application "System Events"
      set service_name to "IKEv2_connection_name"
      do shell script "scutil --nc start \"" & service_name & "\""
end tell

根据这个答案,您可以在其中看到更多scutil选项:

In Mac OS X 10.11, Opening a VPN connection window with the command line gives me an error

答案 2 :(得分:0)

这不是您问题的直接答案,而是完成此问题的另一种方式;

此人创建了一个应用(也提供源)来执行scutil而AppleScript无法执行的操作:https://blog.timac.org/2018/0719-vpnstatus/