Osx lion 在MacOSX上使用捕获网络助手连接到VPN

Osx lion 在MacOSX上使用捕获网络助手连接到VPN,osx-lion,osx-mountain-lion,vpn,autologin,Osx Lion,Osx Mountain Lion,Vpn,Autologin,苹果公司在MacOSX Lion(10.7)上推出了一项新的“功能”,称为Captive Network Assistant。在我看来,这只是一个无用和恼人的功能。它的目的是帮助您登录到需要身份验证的网络(请参阅:),但该功能不存储cookie或保存密码 在我的大学里,我们也使用这样一个网络,要求用户登录。登录不是通过浏览器而是通过VPN进行的,这使得专属网络助手完全无用且烦人 因此,我在这里发布了一个指南,介绍如何用一些实际有用的东西来替换这个“功能”,我不想让它丢失,对其他人有用 #1.创建

苹果公司在MacOSX Lion(10.7)上推出了一项新的“功能”,称为Captive Network Assistant。在我看来,这只是一个无用和恼人的功能。它的目的是帮助您登录到需要身份验证的网络(请参阅:),但该功能不存储cookie或保存密码

在我的大学里,我们也使用这样一个网络,要求用户登录。登录不是通过浏览器而是通过VPN进行的,这使得专属网络助手完全无用且烦人

因此,我在这里发布了一个指南,介绍如何用一些实际有用的东西来替换这个“功能”,我不想让它丢失,对其他人有用

#1.创建一个名为“Captive Network Assistant”的bash脚本,将以下代码粘贴到其中,并用相同的文件替换为/System/Library/CoreServices/Captive Network Assistant.app/Contents/MacOS/

#2.创建一个名为“vpn.scpt”的applescript,将其放在bash脚本中提到的路径下,并将以下代码放在其中:

set wlanssid to do shell script "networksetup -getairportnetwork en1 | cut -c 24-"
connectVPN(wlanssid)

on connectVPN(SSID)
    tell application "System Events"
        tell current location of network preferences
            local VPNService
            if (SSID = "XYZXYZ") then --WLANNAME
                set VPNService to service "XYZXYZ-VPN" --VPNNAME
                set isConnected to connected of current configuration of VPNService
                if not isConnected then
                    connect VPNService
                end if
            end if
        end tell
    end tell
end connectVPN
每次计算机连接到“捕获网络”时,都会执行此脚本 如果WLAN的SSID被称为“XYZXYZ”,它将启动名为XYZXYZ-VPN的VPN连接

可以修改脚本以支持多个捕获网络

还可以向脚本中添加咆哮通知。
我的完整脚本如下所示:

这可能很有用,但根本不是问题。你能有一个更好的地方举办吗?我同意它应该在别的地方——但同时,这是一个救命稻草;-)你为什么把Applescript放在那个位置?通常,您应该避免在/System/Library中添加或编辑内容。我建议您将Applescript放在/Library中的某个位置,为什么不放在/Library/Scripts中呢?否则,这是一篇有趣的好文章!自我回答是可以的,但是他们应该是问题+答案的形式。(您可以在发布后几天内接受自己的答案。)
set wlanssid to do shell script "networksetup -getairportnetwork en1 | cut -c 24-"
connectVPN(wlanssid)

on connectVPN(SSID)
    tell application "System Events"
        tell current location of network preferences
            local VPNService
            if (SSID = "XYZXYZ") then --WLANNAME
                set VPNService to service "XYZXYZ-VPN" --VPNNAME
                set isConnected to connected of current configuration of VPNService
                if not isConnected then
                    connect VPNService
                end if
            end if
        end tell
    end tell
end connectVPN