0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Wi-Fi接続先に応じてネットワーク環境設定を自動で切り替える(macOS Sequoia版)

Last updated at Posted at 2025-07-19

導入

Wifi接続先に応じてネットワーク環境設定を自動で切り替える

こちらの記事と同じようなことをやりたかったがどうもSequoiaでは全く同じようには行かないらしく、同記事のコメントの情報も合わせてmacOS Sequoiaに対応した設定方法を残しておく。

ちなみに私は自宅でのみIPを固定したいので、ネットワーク環境の数が"自動"(デフォルト)と"自宅"のみになっているが、"会社"、"自宅"、"それ以外"などで分けたい場合も、シェルスクリプトの分岐が多くなるだけでだいたい同じだと思う

Special Thanks!

環境

tmp.png

  • MacBook Air (M4, 2025)
  • macOS Sequoia 15.5

"ネットワーク環境"の設定

  1. 右上のリンゴマークからシステム環境設定を開く

  2. "ネットワーク"を選択

  3. 下部にある三点リーダーマークを押し、"ネットワーク環境"->"ネットワーク環境を編集…"を押すtmp.png

  4. この画面の+マークをポチポチし、ネットワーク環境を追加する(分岐の数だけ)tmp.png

  5. 3.の画面から追加したネットワークを選択した状態で、お好みの設定に変更するtmp.pngtmp.png

  6. これを設定したい数だけ行う(自分の場合は1つだけ)
    おそらく"自動"がデフォルトの設定であると思われる

シェルスクリプト

Network_environment_switch.sh
#!/bin/zsh
switchtolocation() {
  currentlocation=`networksetup -getcurrentlocation`
  if test $currentlocation = $1; then
    return
  fi
  scselect `scselect|grep ${1}|cut -b 4-40`
  osascript -e 'display notification "'"ネットワーク環境を「${1}」へ変更しました。"'" with title "'"${0##*/}"'" subtitle "'"${2}"'"'
}

ADAPTER=en0

airportpower=`networksetup -getairportpower ${ADAPTER}|cut -d' ' -f4`
if test ${airportpower} = 'Off'; then
  echo 'Wifi is Off.'
  exit
fi

ssid=`ipconfig getsummary ${ADAPTER} | awk -F ' SSID : '  '/ SSID : / {print $2}'`
case "$ssid" in
  "自宅のSSID")
    switchtolocation "自宅" ${ssid}
    ;;
  *)
    switchtolocation "Automatic" ${ssid}
    ;;
esac

ADAPTER=の行は、お使いの環境に合わせて変更してください(Wi-Fiはen0?)
確認は以下のコマンドでできるかと思います。

networksetup -listallhardwareports

出力例

Hardware Port: Ethernet Adapter (en3)
Device: en3
Ethernet Address: 22:46:7e:bc:d7:ef

Hardware Port: Ethernet Adapter (en4)
Device: en4
Ethernet Address: 22:46:7e:bc:d7:f0

Hardware Port: AX88179A
Device: en6
Ethernet Address: c8:a3:62:5a:74:7b

Hardware Port: Thunderbolt Bridge
Device: bridge0
Ethernet Address: 36:0e:ab:fc:fe:c0

Hardware Port: Wi-Fi
Device: en0
Ethernet Address: 2c:ca:16:61:eb:9e

Hardware Port: Thunderbolt 1
Device: en1
Ethernet Address: 36:0e:ab:fc:fe:c0

Hardware Port: Thunderbolt 2
Device: en2
Ethernet Address: 36:0e:ab:fc:fe:c4

VLAN Configurations
===================

また、"自宅のSSID"の部分をトリガーとしたいWi-FiのSSIDに、"自宅"の部分を、あなたがネットワーク環境設定でさきほど作成した名前に変更してください。

作成したシェルスクリプトを好きな場所に配置します。
私は~/bin/Network_environment_switch.shとして保存しました。

続いて実行権限を付与します。

chmod +x スクリプトのパス

スクリプトのパスは各位が保存した場所に変更してください。

続いてWi-Fi接続時に自動で上記スクリプトを実行する設定を行います。

wifi-detector.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>wifi-detector</string>
  <key>ProgramArguments</key>
  <array>
    <string>スクリプトのパス</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WatchPaths</key>
  <array>
     <string>/Library/Preferences/SystemConfiguration/com.apple.wifi.message-tracer.plist</string>
  </array>
</dict>
</plist>

"スクリプトのパス"は変更してください。
元記事では、WatchPaths/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plistを指定していましたが、コメント欄によるとBig Surあたりからこのファイルが変更されなくなったらしく、代わりに/Library/Preferences/SystemConfiguration/com.apple.wifi.message-tracer.plistにするとよいとのことでした。

このファイルを~/Library/LaunchAgentsに好きな名前で保存します。私はwifi-detector.plistとしました。

最後に、以下のコマンドを実行します。

launchctl load <作成したplistのパス>

"作成したplistのパス"は変更してください。

以上です。バックグラウンド項目の追加が云々と通知が出てきますが、無視します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?