💨

ターミナル上からVPN接続する( Tunnelblick編 )

2023/12/07に公開

RailsエンジニアのDです。
本記事は SimpleForm Advent Calendar 2023 の 8 日目の記事です。

当社では通常、開発の際には社内のVPNに接続にした状態で作業を進めています。
VPN接続の際には Tunnelblick を利用しており、本記事では Tunnelblick を利用した際のコードベースの実行によるVPN接続方法に関してご紹介します。

前提

自身の普段の開発には、Macbook( macOS )を用いており、本記事も主に macOS を利用しているユーザ向けの記事になっています。

VPN接続をより快適にしたい背景

メイントピックの前に、開発の際のセットアップ手順について簡単に説明します。
( 軽く読み飛ばしてしまっても特に問題ないパートです。 )

開発時には以下の2つのSTEPを踏んで準備を進めていました。

  • STEP1: Tunnelblick を起動し、Tunnelblick のUIからボタンをクリックしVPNに接続する
  • STEP2: ターミナル等のCLIから開発を行いたいリポジトリに移動し、開発したいアプリケーションを立ち上げたりなどする

いつものセットアップ
従来のセットアップ手順

このワークフロー自体には大きな不満はなかったのですが、毎回アプリケーションを切り替えて作業の準備をすることにやや無駄を感じていました。

そこで、ターミナルから全て準備作業を完結させることができないか🤔と考えたのが、今回紹介するコードベースの実行によってVPN接続する試みのはじまりでした。

理想のセットアップ
目指したいセットアップ手順

Tunnelblick をコードベースで実行する方法

Tunnelblick が AppleScript の Support をしている件

Tunnelblick の公式ドキュメントには、どのようにインストールしたら良いかや、始め方、その他さまざまな活用法が記載されています。その中で、特に今回関連するのが Tunnelblick が AppleScript の Support をしている点です。

https://tunnelblick.net/cAppleScriptSupport.html

この AppleScript というものがうまく実行できれば、 Tunnelblick をコードベースで実行する目的が達成できる訳です。

そもそも AppleScript とは

Wikipedia に記載のある説明が簡潔で分かりやすかったので引用させていただきます。

AppleScript(アップルスクリプト)は、Appleが開発したClassic Mac OS/macOS用のオブジェクト指向のスクリプト言語。System 7(Mac OS 7にあたる)から採用されている。
標準環境で利用でき、ある程度自然言語(英語)に似た構文を持つ。

https://ja.wikipedia.org/wiki/AppleScript

AppleScirpt は記載のある通り、macOS用のスクリプト言語で、標準で利用できます。なおかつ、AppleScript はOSAに準拠したスクリプト言語の一つです。

なので、AppleScript プログラムの実行の際は、OSAスクリプト言語を実行するコマンドであるosascript が利用可能です。

https://ss64.com/osx/osascript.html

例えば、osascript コマンドを用いて、Safari を起動する AppleScript を実行しようとした場合、以下のコマンドを実行します。

実行コマンド

$ osascript -e 'tell app "Safari" to activate'

ワンラインのコード実行の他にも、AppleScirpt をファイルに切り出すことも可能です。

実行コマンド

$ osascript activate_safari.scpt

実行ファイル ( activate_safari.scpt )

-- activate_safari.scpt
tell app "Safari" to activate

AppleScript を実行して VPN接続してみよう

以上より、 Tunnelblick を呼び出し、VPNに接続する AppleScript を実行すれば良さそうです。
そしてそのプログラムが以下のプログラムになります。接続先は Tunnelblick のUI上から確認できます。

VPN接続のプログラム ( connect_vpn_script.scpt )

-- connect_vpn_script.scpt
tell application "/Applications/Tunnelblick.app"
    connect "<接続先をここに記入>"
end tell

接続先の確認方法 ( Tunnelblick )

接続先
Tunnelblickから確認できます

デモ

実演にあたっては、便宜上、ワンラインでの実行で以下のコマンドを実行しています。

実行コマンド

$ osascript -e "tell application \"/Applications/Tunnelblick.app\"" -e "connect \"DevSimpleForm\"" -e "end tell"

プレビュー
デモ

さいごに

今回は、Tunnelblick をコードベースで実行できる方法を紹介させていただきました。

その過程で登場した AppleScipt などは、なかなか目にすることが少ないかもしれません。初めて知る方も多かったのではないでしょうか。もし本記事から新しい知見を得ていただけたなら、なによりです😊

最後までお読みいただき、ありがとうございました。

Discussion