AWS Client VPN for Mac の起動/接続/切断をコマンドで行ってみた

2023.11.08

こんにちは、CX 事業本部 Delivery 部の若槻です。

最近、接続元 IP 制限のある環境にアクセスをするために AWS Client VPN をデスクトップアプリから利用する機会があります。

その際に MAcBook 上で「AWS Client VPN の起動/接続/切断の操作をコマンドで自動化」したくなったので、方法を確認してみました。

はじめに結論

次の 2 つの scpt ファイルを作成して、任意の場所に配置します。

  • connect-vpn.scpt

connect-vpn.scpt

tell application "AWS VPN Client"
    activate
    tell application "System Events"
        tell process "AWS VPN Client"
            click button "Connect" of window "AWS VPN Client"
        end tell
    end tell
end tell

  • disconnect-vpn.scpt

disconnect-vpn.scpt

tell application "AWS VPN Client"
    activate
    tell application "System Events"
        tell process "AWS VPN Client"
            click button "Disconnect" of window "AWS VPN Client"
        end tell
    end tell
end tell

次のコマンドを実行すれば、AWS VPN Client デスクトップアプリの起動/接続、および切断を行うことができます。

# 起動および接続
open "/Applications/AWS VPN Client/AWS VPN Client.app" && osascript connect-vpn.scpt

# 切断
open "/Applications/AWS VPN Client/AWS VPN Client.app" && osascript disconnect-vpn.scpt

確認した環境

  • Mac:

$ sw_vers
ProductName:            macOS
ProductVersion:         13.6
BuildVersion:           22G120

  • AWS VPN Client : 3.8.0

なお、使用されるプロファイルは 1 つのみで、設定済みとします。

確認してみた

まず、AWS VPN Client のデスクトップアプリは、プロセスを起動するとメニューバーに追加され、ウィンドウを起動すると Connect または Disconnect ボタンが操作可能になります。

よって、アプリの状態には次の 5 パターンがあります。

  • プロセスが未起動
  • プロセスが起動済み & ウィンドウが未起動 & 未接続
  • プロセスが起動済み & ウィンドウが起動済み & 未接続
  • プロセスが起動済み & ウィンドウが未起動 & 接続済み
  • プロセスが起動済み & ウィンドウが起動済み & 接続済み

プロセスおよびウィンドウが起動済みの場合は、次の Apple Script コマンドで VPN の接続/切断を行うことができます。それぞれ、接続状態が想定された状態ではない(=想定されたボタンが無い)場合は、エラーが発生するのでトライキャッチで処理するようにしています。

  • VPN 接続

tell application "AWS VPN Client"
    activate
    tell application "System Events"
        tell process "AWS VPN Client"
            try
              click button "Connect" of window "AWS VPN Client"
            on error errMsg
              display dialog "ERROR: " & errMsg
            end try
        end tell
    end tell
end tell

  • VPN 切断

tell application "AWS VPN Client"
    activate
    tell application "System Events"
        tell process "AWS VPN Client"
            try
              click button "Disconnect" of window "AWS VPN Client"
            on error errMsg
              display dialog "ERROR: " & errMsg
            end try
        end tell
    end tell
end tell

一方で、プロセスまたはウィンドウが未起動の場合は、次のコマンドでアプリを起動できます。

open "/Applications/AWS VPN Client/AWS VPN Client.app"

よって、上記のスクリプトおよびコマンド実行を組み合わせて、下記のように実行することにより、AWS VPN Client デスクトップアプリの起動/接続、および切断をコマンドで行うことができます。

# 起動および接続
open "/Applications/AWS VPN Client/AWS VPN Client.app" && osascript connect-vpn.scpt

# 切断
open "/Applications/AWS VPN Client/AWS VPN Client.app" && osascript disconnect-vpn.scpt

初回のみ権限の設定が必要

スクリプトを初めて実行するアプリの場合は、初回のみ次のような権限設定が求められるので、手動設定する必要があります。

おわりに

AWS VPN Client for Mac の起動/接続/切断をコマンドで行ってみました。

AWS VPN Client をよく利用される方は、ルーチンワークの自動化に役立つと思うので、是非お試しください。

ちなみに Apple Script は今回初めて触ったのですが、日本語の情報が少なすぎてあまり自分では触りたくないですね...。なのでスクリプトの組み立ては ChatGPT にとてもお世話になりました。

参考

以上