【macOS】特定のWi-Fiに接続したときにNASを自動マウントする方法

Mac

こんにちは、しきゆらです。
今回はタイトル通り、macOSにて特定のWiFiに接続したときにNASへ自動的に接続する方法を知ったのでメモしておきます。

macOSでNASへ接続する

macOSでは、NASへ接続する時はFinderの「サーバーへ接続」からURLやIPアドレスを指定する必要があります。
必要な時のみ接続するような場合は、Finderやショートカットキー(⌘+K)から接続可能です。

この「サーバーへ接続」ですが、デフォルトではOS起動時に自動的に接続・マウントしてくれません。
自動的に接続・マウントする方法はいくつかあるようで、「システム設定」の「一般 > ログイン項目と機能拡張」にある「ログイン時に開く」でNASを指定する方法、Automatorを使う方法、シェルスクリプトを書く方法などがあります。
この方法は、常に接続するようなNASやサーバであれば何の問題もありません。

一方で、家や会社、学校など特定の環境でのみNASへ接続させたい場合があるかと思います。
このようなNASへ上記の設定をする場合、起動時にNASへ接続しようとしても接続できずエラーが表示されます。
これは鬱陶しいですよね。

ということで、特定のNWに接続したときにのみNASへ接続・マウントする方法をまとめます。
ここでは、すでにNASの認証情報をキーチェーンへ保存している前提で記載しますのでご了承ください。

特定のWiFiに接続した時のみNASへ接続する方法

AutomatorではNW接続が変化したかどうかを判定することはできなさそうなので、今回はショートカットアプリを使っていきます。
ショートカットアプリの「オートメーション」には「Wi-Fi」というトリガーが用意されているので、このトリガーが発火したときにNASへの接続をさせていきます。

ショートカットアプリについては、Appleのサイトに概要が記載されています。

NASへ接続するショートカットの作成

Appleのサイトにショートカット作成に関する手順が記載されていますが、ここでは実際の画像を添えて記載していきます。

まずは、NASへ接続するショートカットを作成します。
「すべてのショートカット」から画面右上にある「+」ボタンをクリックします。

以下のような画面が開くので、画面右側にあるアクションのリストを組み合わせてNASへの接続を設定していきます。

追加するのは、以下の2つ。
「待機」はネットワーク接続直後ではなくある程度間を開けてから接続させるために入れてます。
「サーバに接続」ではNASのURLやIPアドレスを指定します。

  • 待機
  • サーバに接続

追加すると以下のようになるはずです。
ここでは5秒待機させていますが、お好みで長さは指定してください。

テストとして上部にある「スタートボタン」をクリックして、問題なくNASへ接続できるかを確認しましょう。

問題なく接続できれば、ショートカットの作成は完了です。
もし以下のような接続エラーが起きた場合は、NASと同じネットワークに接続できているか、IPアドレスやURLが正しいかを確認しましょう。

続いて、作成したショートカットを実行するトリガーを指定します。

なお、作成したショートカットの定義画面は、自動的に保存されているので閉じてしまって問題ありません。

また、ショートカット名は登録されているアクションから自動的に設定されますが、変更可能です。
上記画像でいうところの「サーバに接続」の箇所をダブルクリックすると入力できるようになるので、必要に応じて名前をつけてあげましょう。

ショートカットを実行するトリガーの設定

ショートカットアプリのトップ画面から「オートメーション」をクリックして
画面右上の「+」アイコンをクリックしてトリガーを指定します。

トリガーは「Wi-Fi」を指定して「次へ」。

「いつ」という画面になるので、NASへ接続するネットワークを指定します。
「参加済み」にチェックを入れると、指定したネットワークに接続したときにトリガーが発火します。
合わせて「すぐに実行」を指定しておくと、指定したネットワークに接続したタイミングでバックグラウンドで実行されます。

トリガーを指定できたら、ショートカットの内容を指定していきます。
「マイショートカット」のところに、先ほど作成したショートカットがあるはずなので、選択して「完了」をクリック。

これにて特定のネットワークに接続したときにNASへ接続させる設定は完了です。

テストとして、WiFiを再接続したり別のWiFiに接続してみて、意図したタイミングでショートカットが実行されるかを確認してみてください。

問題なくNASへ接続・マウントできれば完了です。

おまけ: シェルスクリプトからNASへ接続する

上記では、一定時間待機してNASへ接続するという手順をショートカットアプリが用意してくれたアクションの組み合わせで実現しました。
しかし、「極力自分で作りたい」という方や「スクリプトとして管理したい」というようなニーズもあるかもしれません。
ということで、おまけとしてシェルスクリプトで実現する方法を残しておきます。

コードは以下の通り。
メインとなる部分はシェルスクリプトというよりもAppleScriptですが、ほぼショートカットアプリと同様のことができます。

sleep 5
osascript -e 'mount volume "smb://<NASのIPアドレス or URL>/<パス>"'

sleep 2
killall Finder

一点異なるのは、killall FinderでFinderを一旦止めて再起動している点です。
これは、接続中のサーバをデスクトップに表示している場合、時々NASが表示されない場合があったので強制的にFinderを再起動させて検知させるようにするために追加しています。
Finderを止めたとしてもすぐに再起動するので、影響としては一瞬フォルダのアイコンがちらつく程度です。
ちらつきが気になる場合や不要な場合はコメントアウトしてください。

また、ショートカットアプリのアクションにはシェルスクリプトを実行するものも用意されているので、このスクリプトを指定することも可能です。
アクションで定義する場合と同様に、本番として動かす前に手動で実行して問題なく動作することを確認した上で使いましょう。

また、AppleScriptについては以下あたりが参考になるかもしれません。

かなり古い書籍ですが、日本語で書かれているのはこの辺になります。

AppleScriptとは、というのは以下にまとまっています。

まとめ

今回は、macOSにて特定のネットワークへ接続したときのみ、自動的にNASへ接続させる方法をまとめました。

Windows機だと、ネットワークドライブ割り当て時に「サインイン時に再接続するか」を設定できたはずですが、macOSだとその設定が見当たらなかったので調べてみました。
デスクトップ環境だとシステム設定の「ログイン時に開く」で良いと思いますが、ノート環境だと今回の設定があると便利かと思います。

あとは、シェルスクリプトをゴリゴリかける人は、何度か接続をさせてみて規定回数失敗したら諦めるようなスクリプトを組めば良いかと思いますが、私はシェルスクリプトは毎回ググりながら書くので、できれば標準機能の組み合わせで実現したいと思っていました。
何とか実現できたので嬉しい限りです。
もし、似たようなことでお困りの方の参考になれば幸いです。

また、我が家のNASは古い自作PCにNAS用OSを入れて動かしていますが、最近は安いNASも多数出ています。
興味があれば、こちらもぜひ。

今回は、ここまで。

おわり

Posted by しきゆら