6

Я пытаюсь войти в свой VPN (Cisco IPSec) через командную строку на Mac

scutil --nc start "myVPN (Cisco IPSec)" --password "mypassword"

При запуске этого скрипта я просто получаю обычное всплывающее окно без ввода пароля (хотя имя пользователя заполняется автоматически (так же, как при щелчке по имени входа vpn). Можно ли ввести пароль, используя этот метод, или это любой другой способ подключения к VPN через командную строку?

2 ответа2

4

Я написал сценарий оболочки, который выбирает пароль из цепочки для ключей, а затем вставляет его во всплывающее окно. Вы должны сделать элемент цепочки для ключей с паролем, чтобы это работало.

# VPN.sh 
# change these variables for your setup

keychainItem=accountWithPassword      # this name has to match "Account" for the entry you make in keychain
VPNName="VPN (Cisco IPSec)"   # match the name of the VPN service to run

get_pw () {
   security 2>&1 >/dev/null find-generic-password -ga $keychainItem \
   |ruby -e 'print $1 if STDIN.gets =~ /^password: "(.*)"$/'
}

echo "fetching VPN credentials from keychain account \"$keychainItem\""
echo "Using VPN service: $VPNName"

scutil --nc start "$VPNName"

sleep 2.7
osascript -e "tell application \"System Events\" to keystroke \"$(get_pw)\""
osascript -e "tell application \"System Events\" to keystroke return"
sleep 2

exit
1

Это может быть хорошим способом, который проверяет, подключен ли VPN уже ...

\#!/bin/sh

keychainItem="MY KEYCHAIN ACCOUNT"# this name has to match "Account" for the entry you make in keychain
VPNName="MY VPN"   # match the name of the VPN service to run

function isnt_connected () {
    scutil --nc status "$VPNName" | sed -n 1p | grep -qv Connected
}

get_pw () {
   security 2>&1 >/dev/null find-generic-password -ga $keychainItem \
   |ruby -e 'print $1 if STDIN.gets =~ /^password: "(.*)"$/'
}

echo "fetching VPN credentials from keychain account \"$keychainItem\""
echo "Using VPN service: $VPNName"

if isnt_connected $VPNName; then
    echo "Connecting to VPN..."
    scutil --nc start "$VPNName"
    sleep 0.5
    osascript -e "tell application \"System Events\" to keystroke \"$(get_pw)\""
    osascript -e "tell application \"System Events\" to keystroke return"
    sleep 2
    osascript -e "tell application \"System Events\" to keystroke return"
else
    echo "Already Connected to VPN..."
fi

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .