В Mac OS X 10.11 отварянето на прозорец за VPN връзка с командния ред ми дава грешка

В Mac OS X ‹= 10.10 мога да изпълня следната команда, за да отворя прозорец за VPN връзка:

function go-vpn {
/usr/bin/env osascript <<-EOF
tell application "System Events"
        tell current location of network preferences
                set VPN to service "LF VPN"
                if exists VPN then connect VPN
                repeat while (current configuration of VPN is not connected)
                    delay 1
                end repeat
        end tell
end tell
EOF
}

Това ще отвори прозореца за връзка (същото като избирането на мрежата „LF VPN“ от падащото меню VPN). В El Capitan обаче получавам следната грешка:

execution error: System Events got an error: Can’t get current configuration of service id "18E8C59B-C186-4669-9F8F-FA67D7AA6E53" of network preferences. (-1728)

Как може да се направи еквивалент на това в El Capitan и как това може да бъде отстранено?

„Екранна


person alberto56    schedule 05.10.2015    source източник
comment
Хм, странно, вашият скрипт работи добре при моята настройка. Бихте ли опитали да стартирате scutil --nc list в терминал? Това трябва да ви даде списък с налични услуги за мрежова връзка и техните идентификатори, може би идентификаторите се различават? За лесно отстраняване на неизправности бих предложил просто да изтриете и създадете отново VPN записите в System Preferences също.   -  person Asmus    schedule 06.10.2015


Отговори (4)


Вместо това използвам scutil и той работи безупречно на OS X 10.11

set vpn_name to "'VPN Connection Name'"
set user_name to "my_user_name"
set otp_token to "XYZXYZABCABC"

tell application "System Events"
    set rc to do shell script "scutil --nc status " & vpn_name
    if rc starts with "Connected" then
        do shell script "scutil --nc stop " & vpn_name
    else
        set PWScript to "security find-generic-password -D \"802.1X Password\" -w -a " & user_name
        set passwd to do shell script PWScript
        -- installed through "brew install oath-toolkit"
        set OTPScript to "/usr/local/bin/oathtool --totp --base32 " & otp_token
        set otp to do shell script OTPScript
        do shell script "scutil --nc start " & vpn_name & " --user " & user_name
        delay 2
        keystroke passwd
        keystroke otp
        keystroke return
    end if
end tell
person captnswing    schedule 07.10.2015
comment
БЛАГОДАРЯ! Коментирах нещата за еднократната парола, за да накарам моята да работи. За моята VPN не са необходими данни в стил на ключодържател. Иначе перфектно. Благодаря ти. - person Scott C; 05.01.2016
comment
Някои низове с пароли могат да бъдат проблематични, когато ги натиснете всички заедно. Заобиколих това, като вместо натискане на клавиш passwd въвеждах по един знак от низа: repeat with thisCharacter in the characters of passwd keystroke thisCharacter end repeat - person Scott C; 19.01.2017
comment
Всъщност вече не натискам паролата (и otp token). По-лесно е да копирате всичко в клипборда чрез set the clipboard to passwd & otp и след това да поставите в полето, когато изскочи. - person captnswing; 20.01.2017

вместо това използвайте shell скрипт:

scutil --nc start "$service"    #connect
scutil --nc stop "$service"     #disconnect
person nullne co    schedule 09.10.2015

В допълнение към отговора на Оливър, в macOS 10.12.6 изходът от scutil --nc status се промени, така че съвпадението „Connected“ също съвпада за „ConnectedCount“. Не съм сигурен в коя версия на macOS това се промени.

Направих лека промяна в теста, за да гледам само първия ред на изхода, което наистина трябва да се провери.

VPN="YOUR_VPN_NAME"
IS_CONNECTED=$(test -z `scutil --nc status "$VPN" | head -n 1 | grep Connected` && echo 0 || echo 1);
if [ $IS_CONNECTED = 1 ]; then
  scutil --nc stop "$VPN"
else
  scutil --nc start "$VPN"
fi

Това работи за мен на macOs 10.12.6. Дано помогне на другите.

person adejones    schedule 15.08.2017

Проблемът: Проблемът беше, че получих тази грешка.

Can’t get «class svce» "MY VPN" of «class locc» of «class netp» of application "System Events".

System Events got an error: Can’t get service "My VPN" of current location of network preferences. (-1728)

Причината: Използвам IKEv2 услуги. Изглежда, че Apple Script (който намерих навсякъде в интернет) не работи с това. Можете да намерите подробности в линка по-долу.

Решението: Timac написа скрипт за решаване на този проблем. Просто изтеглих предварително компилираното приложение тук. https://blog.timac.org/2018/0719-vpnstatus/

Ако се интересувате от изходния код, който го кара да работи, можете да го намерите в GitHub тук: https://github.com/Timac/VPNStatus

Можете също така да се задълбочите в проблема, ако сте такъв човек на тази връзка. Дава подробности.

Ако просто търсите решение за автоматично свързване на вашата VPN, приложението VPNstatus работи за мен.

person Bade Adesemowo    schedule 06.10.2020