見出し画像

移動先でもMacBookを自動でネットワークに繋げる方法.[コマンド利用]

今回は,自動でmacとiPhoneを接続する方法を紹介したいと思います.

自分自身 ,最近Mac bookを持ち運び,カフェ等で勉強することが増えたのですが,その度ごとにテザリングをすることが煩わしく感じたので紹介させていただきます.

ちなみに,free-wifi利用はもっと煩わしいので基本的には使いません.[接続時間制限,通信速度,安全性等に問題がある場合がほとんどのため.]

Macbook とiPhone をいつも外出先で,手動でテザリングしている方は必見です.[Catalina動作実行確認済み]

それでは,そろそろ本題のネットワーク接続自動化のお話をさせていただきます.


今回使用するものはターミナルとほんの少しのプログラミングの知識です.プログラミングにふれたことがない方には,少し難しく感じるかもしれませんが,本説明通りにプログラムをすると,今後不必要な煩わしさを感じなくなるので挑戦してみてください.

ここからは,手順のお話をさせていただきます.

手順1:まずターミナルに必要であるhomebrewをインストールする.

ターミナルにhomebrewをダウンロードしていない方は,以下コマンドをターミナルにコピペしてください.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

これでインストールができました.

ここからが本番です.それでは,

次にsleepwatcherなるものをインストールしていきます.

手順2:sleepwatcherを用いて,スリープを検知する.

以下のコマンドを入力し,sleepwatcherをインストールします.

$ brew install sleepwatcher

できましたでしょうか.これを用いるとパソコンのスリープを検知できます.そこでsleepwatcherを常駐させて,常に検知できるようにします.

LaunchAgentに登録することで常駐させることができるので,下記コマンドを実行してファイルとディレクトリを用意します.

mkdir -p ~/Library/LaunchAgents
cp /usr/local/opt/sleepwatcher/de.bernhard-baehr.sleepwatcher-20compatibility-localuser.plist ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher.plist

ここで設定ファイルを見てみましょう.

cat ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
   <key>Label</key>
   <string>de.bernhard-baehr.sleepwatcher</string>
   <key>ProgramArguments</key>
   <array>
       <string>/usr/local/sbin/sleepwatcher</string>
       <string>-V</string>
       <string>-s ~/.sleep</string>
       <string>-w ~/.wakeup</string>
   </array>
   <key>RunAtLoad</key>
   <true/>
   <key>KeepAlive</key>
   <true/>
</dict>
</plist>

中身は以上のようになっています.

簡単に説明すると,スリープすると「~/.sleep」が,また,スリープ解除すると「~/.wakeup」が実行されます.
そこで,上記2つのファイルを作って,実行権を与えておきましょう.

touch ~/.sleep ~/.wakeup
chmod +x ~/.sleep ~/.wakeup

これで準備は完了です.

最後に下記のコマンドを入力して,LaunchAgentが読み込めるように登録しましょう.

launchctl load ~/Library/LaunchAgents/de.bernhard-baehr.sleepwatcher.plist

手順3:最後にスリープ,スリープ解除の検知時に行われるファイルを作ります.

先程作った,~/.sleep と ~/.wakeup のファイルに,それぞれ中身を書き込みます.以下コマンドは,前者を~/.sleepへ,後者を~/wakeupに入れてみましょう.

~/bin/connectBluetoothTethering
~/bin/disconnectBluetoothTethering

更に,上記で読み込まれるファイルを作ります.

同様に,前者を上記の前者へ,後者を上記の後者へ入れてみましょう.

つまり,上で示される位置に下記のファイルを書き込みます.手順2と同様にtouchコマンドを用いて,書き込んでみましょう.

#!/usr/bin/osascript

tell application "System Events"
   tell application process "SystemUIServer"
       tell menu bar 1
           set bt to item 1 of (menu bar items whose description is "bluetooth")
       end tell
       tell bt
           click it
           click menu item "for him." of menu 1
           click menu item "ネットワークへ接続" of menu 1 of menu item "for him." of menu 1
       end tell
   end tell
end tell
#!/usr/bin/osascript

tell application "System Events"
   tell application process "SystemUIServer"
       tell menu bar 1
           set bt to item 1 of (menu bar items whose description is "bluetooth")
       end tell
       tell bt
           click it
           click menu item "for him." of menu 1
           click menu item "ネットワークから接続解除" of menu 1 of menu item "for him." of menu 1
       end tell
   end tell
end tell

ちなみに,コマンド内にある"for him."は,自分のiPhoneの名称ですので,"自分のiPhoneの名称"のように置換しておいてください.

ここまでできれば完了です.スリープ復帰後,テザリングが自動で開始されれば成功です.

お疲れさまでした.

されない場合は,再起動をしてみましょう.

それでも改善されない場合は,ファイルのコマンドが間違っていないか再度確認してみてください.


この記事が気に入ったらサポートをしてみませんか?