シェルスクリプトを作成し単体での動作確認を終えたなら、いよいよ自動で接続するための環境を準備して実際に動作をさせてみます。
テスト
環境設定
ネットワークの状態変更を監視するための環境を設定します。以前の記事でどうするのかを書いていなかったので追記します*1。
結論は、下の記事を探し当てることができたのでそのまま引用させていただきました。
Mac:ネットワーク接続をトリガに/etc/hostsを切り替える
監視対象とするフォルダは"WatchPaths"という要素に文字列で記述するそうです。
- シェルスクリプトを配置
作成したシェルスクリプトの配置先、"/usr/local/bin/"あたり*2が適当でしょうけれど、Automatorから"シェルスクリプトを実行"をから実行する際には絶対パスを書く必要があったりするので/Applicationsフォルダに置くことにします。実行権限の確認を忘れずに。
- lauchdに読み込ませるplistを作成
launchdについては下の記事がわかりやすく解説してくれています。
フォルダの監視を行うためにplistに記載する項目については以下
「Mac:ネットワーク接続をトリガに/etc/hostsを切り替える」では、
"/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist"
を指定していますが、macOS11で仕様が変わったのか、
"/Library/Preferences/SystemConfiguration/com.apple.wifi.message-tracer.plist"
を監視対象にするよう追加しました*3。その他、stdoutとstderrの出力先のパスを記述することができるようです。
単体テスト
手順は以下のとおりです
⑴ plistをロードする
launchctl load "plistのパス"
⑵ 監視を開始する
launchctl start ジョブラベル(plistのLabel要素に記載した名称)
launchctl listコマンドで表示されるジョブの一覧からジョブラベルに
記載した名称のジョブの状況を確認する。
Statusが0であれば、正常、そうでなければ何かしらのエラーが
おきている。*4
(3)plistの変更を反映する
launchctl stop/unload/load/startとジョブを停止させて再度ロードし直して修正
内容を反映する。
結合テスト
システム環境設定でWi-Fiのオフ/オンを行い、指定の位置に共有ドライブがマウントされることを確認します。
展開
もう一台のMacにもシェルスクリプトとplistを配付して環境を整えます。
謝辞
記事中に貼り付けた記事以外にも多くの方の記事を参考にさせていただきました。
御礼申し上げます。