Làm thế nào để tạo scutil đăng nhập vào VPN bằng mật khẩu trên Mac?


6

Tôi đang cố gắng đăng nhập vào VPN (Cisco IPSec) thông qua dòng lệnh trên máy mac

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

nhập mô tả hình ảnh ở đây

Khi chạy tập lệnh đó, tôi chỉ nhận được cửa sổ bật lên thông thường mà không cần điền mật khẩu, (mặc dù tên người dùng được tự động điền (giống như khi nhấp vào đăng nhập vpn). Có thể điền mật khẩu bằng phương pháp này không, hoặc có cách nào khác không kết nối với VPN thông qua dòng lệnh?


Bạn đã bao giờ có thể tìm thấy một giải pháp cho điều này?
Guven

@Guven Có tôi đã thực hiện một giải pháp, có thể đăng nó vào ngày hôm nay
bogen

Cảm ơn! Tôi sẽ xem câu trả lời của bạn và cho bạn biết. Ngoài ra, tôi thực sự muốn thực hiện phương pháp này thêm một bước nữa và thực hiện quá trình đăng nhập hoàn chỉnh từ dòng lệnh / thiết bị đầu cuối (không hiển thị cửa sổ bật lên này). Hãy cho tôi biết nếu bạn có bất kỳ ý tưởng nào ở đó là tốt!
Guven

Điều đó thậm chí còn tốt hơn, đôi khi cửa sổ bật lên mất hơn 2,7 giây để hiển thị, sau đó không đăng nhập được.
Sinh

Câu trả lời:


4

Tôi đã viết một kịch bản shell tìm nạp mật khẩu từ móc khóa và sau đó dán nó vào cửa sổ bật lên. Bạn phải làm một mục móc khóa với mật khẩu để làm việc này.

# 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

Cảm ơn kịch bản. Đó có thể là một cách giải quyết ngay bây giờ nhưng có thể đăng nhập trực tiếp từ dòng lệnh sẽ là giải pháp lý tưởng. Tôi đã nhìn xung quanh và không thể tìm thấy bất cứ điều gì, mà tôi thấy kỳ lạ. Dù sao, hãy cho tôi biết nếu bạn gặp bất cứ điều gì.
Guven

Vâng, tôi cũng không thể tìm thấy bất cứ điều gì về nó, vì vậy, hiện đang sử dụng kịch bản đó
bogen

1

Đây có thể là một cách hay để kiểm tra xem VPN đã được kết nối chưa ...

\#!/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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.