como fazer login scutil para VPN com senha no Mac?

5

Estou tentando fazer login na minha VPN (Cisco IPSec) através da linha de comando em um mac

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

Quando eu executo aquele script, eu só pego o pop-up usual sem preencher a senha (embora o nome de usuário seja preenchido automaticamente (assim como ao clicar no login vpn). É possível preencher a senha usando este método ou é alguma outra maneira de se conectar à VPN através da linha de comando?

    
por hakonbogen 09.09.2014 / 08:52

2 respostas

3

Eu escrevi um script de shell que busca a senha do keychain e a cola no pop-up. Você precisa criar um item de chaveiro com a senha para que isso funcione.

# 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
    
por 30.06.2015 / 12:19
1

Esta pode ser uma boa maneira de verificar se a VPN já está conectada ...

\#!/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
    
por 30.05.2016 / 04:03

Tags