web-dev-qa-db-ja.com

VPN接続のようなOSXでのタスクの自動化?

私は学校のVPNサービスを使用してnetflixでネットサーフィンをしています。ほとんどの場合、VPNに接続する必要があります。私の学校では、CiscoAnyConnectセキュアモビリティクライアントを使用しています。接続するたびにパスワードを入力し、バナーを受け入れる必要があります。 OS Xでこの接続を自動化する方法はありますか?

2
SurenNihalani

OS Xを使用して接続を制御している場合: enter image description here

これが発生する理由は、接続しているCiscoボックスが相互作用を強制しているためです。これは実際には、セキュリティを強化するCiscoVPNアグリゲータの設定です。 Apple(Apple Script/Automator)は、CiscoがApple(CiscoとAppleの両方による)との合意の一部として、これを回避することはできません。私は以前にこれを調査しました、そしてこれは私が双方から与えられた答えでした。

同じことがCiscoOS XVPNクライアントにも当てはまります。

1
Everett

はい、AppleScriptを使用してこれを自動化できます。

これが私が使用するスクリプトです:

-- 1. Place in ~/Library/Scripts and enable the Applescript menu via the Applescript Editor
--    (Or export to .app to run from spotlight.)
-- 2. Substitute "vpn.example.com", "username" and "redacted" for your VPN server and password
-- 3. Open Security & Privacy System Preferences, go to Privacy, Accessibility
-- 4. Enable Applescript Editor and System UI Server (or for this .app if so exported)
-- 5. Trigger script from the menu (or run from spotlight)
-- 6. Enjoy being connected
-- 7. Run script again to close connection


-- AnyConnect now refered to as targetApp
set targetApp to "Cisco AnyConnect Secure Mobility Client"


-- Determine if AnyConnect is currently running
tell application "System Events"
    set processExists to exists process targetApp
end tell


-- Close connection if running; else start connection and fill in password
if processExists is true then
    tell application targetApp
        quit
    end tell
else
    tell application targetApp
        activate
    end tell

    tell application "System Events"
        repeat until (window 1 of process targetApp exists)
            delay 1
        end repeat
        tell process targetApp
            keystroke ("vpn.example.com" as string)
            keystroke return
        end tell
        repeat until (window 2 of process targetApp exists)
            delay 1
        end repeat
        tell process targetApp
            keystroke (tab) using {shift down}
            keystroke ("username" as string)
            keystroke tab
            keystroke ("redacted" as string)
            keystroke return
        end tell
        delay 1
        tell process targetApp
            keystroke return
        end tell

    end tell
end if

これは私が見つけて微調整したスクリプトです。いくつかのバージョンが浮かんでいるので、元の作者が誰であるかはわかりません。 https://Gist.github.com/twksos/44b45abf5263635776ec から入手しました

0
JosephH