[Mac] 自動依 Wi-Fi 名稱更改網路位置
LocationChanger 是一個自動根據 Wi-Fi 網路名稱切換 macOS 網路位置的工具,適合經常在不同網路環境(如家裡、公司、咖啡廳)工作的使用者。
使用場景
- 家裡:自動切換到家用網路設定(如特定 DNS、代理設定)
- 公司:自動套用公司網路配置(如企業代理、VPN)
- 咖啡廳:使用公共網路安全設定
安裝
自動安裝(推薦)
使用官方安裝腳本:
curl -L https://github.com/eprev/locationchanger/raw/master/locationchanger.sh | bash
手動安裝
- 下載 locationchanger 執行檔
- 複製到系統路徑:
sudo cp locationchanger /usr/local/bin/
sudo chmod +x /usr/local/bin/locationchanger
- 建立 LaunchAgent:
mkdir -p ~/Library/LaunchAgents
cp LocationChanger.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/LocationChanger.plist
配置
建立網路位置
首先在 macOS 中建立不同的網路位置:
- 開啟「系統偏好設定」>「網路」
- 點選「位置」下拉選單 >「編輯位置」
- 點選「+」新增位置(如:Home、Office、Public)
- 為每個位置設定對應的網路配置
配置 LocationChanger
編輯配置檔 ~/.locations/locations.conf:
mkdir -p ~/.locations
vim ~/.locations/locations.conf
配置範例:
# 格式:Wi-Fi SSID = 網路位置名稱
# 家裡網路
MyHomeWiFi = Home
MyHomeWiFi-5G = Home
# 公司網路
CompanyWiFi = Office
CompanyWiFi-Guest = Office
# 咖啡廳或公共場所
Starbucks = Public
7-11_Free_WiFi = Public
# 預設位置(當 Wi-Fi 名稱不在列表中時)
* = Automatic
配置說明
- 每行一個規則,格式為
SSID = Location - 支援多個 SSID 對應同一個位置
*表示預設位置(萬用字元)- 井號
#開頭為註解
使用方式
自動切換
安裝並配置完成後,LocationChanger 會在背景自動運行。當連接到不同的 Wi-Fi 網路時,會自動切換到對應的網路位置。
手動測試
測試配置是否正確:
locationchanger
查看日誌
檢查運行日誌:
tail -f ~/Library/Logs/LocationChanger.log
進階設定
執行自訂腳本
LocationChanger 支援在切換位置時執行自訂腳本。建立腳本檔案:
vim ~/.locations/on-location-change.sh
範例腳本:
#!/bin/bash
LOCATION="$1"
SSID="$2"
case "$LOCATION" in
"Home")
# 家裡網路的額外設定
echo "Connected to home network"
# 啟動某些服務
;;
"Office")
# 公司網路的額外設定
echo "Connected to office network"
# 連接 VPN
;;
"Public")
# 公共網路的安全設定
echo "Connected to public network"
# 啟用防火牆
;;
esac
設定執行權限:
chmod +x ~/.locations/on-location-change.sh
停用自動切換
暫時停用 LocationChanger:
launchctl unload ~/Library/LaunchAgents/LocationChanger.plist
重新啟用:
launchctl load -w ~/Library/LaunchAgents/LocationChanger.plist
移除
完整移除 LocationChanger:
# 停用並移除 launch agent
launchctl unload -w ~/Library/LaunchAgents/LocationChanger.plist
rm ~/Library/LaunchAgents/LocationChanger.plist
# 移除執行檔
sudo rm /usr/local/bin/locationchanger
# 移除配置檔
rm -rf ~/.locations
# 移除日誌
rm ~/Library/Logs/LocationChanger.log
疑難排解
無法自動切換
檢查 LaunchAgent 是否正常運行:
launchctl list | grep LocationChanger
配置不生效
- 檢查配置檔格式是否正確
- 確認網路位置名稱與系統設定一致
- 查看日誌檔案排查問題
權限問題
確保 locationchanger 有執行權限:
ls -l /usr/local/bin/locationchanger
替代方案
如果 LocationChanger 不符合需求,可以考慮:
- ControlPlane - 更強大的自動化工具(已停止開發)
- 自訂 Shell 腳本 - 使用
networksetup命令自行撰寫 - Hammerspoon - 使用 Lua 腳本自動化