mac终端可用networksetup命令自动切换网络位置,需预先创建位置、获取接口名后重启网口并刷新dns缓存,支持按ssid智能切换。

Mac 上用终端脚本自动切换网络位置,核心是 networksetup 命令配合简单逻辑判断,无需第三方工具,稳定可靠。
确认已有位置并写入脚本
脚本运行前必须已创建至少两个网络位置(如“家庭”“办公室”),否则 -switchlocation 会失败。可在“系统设置 → 网络 → 编辑位置”中新建。
- 先在终端执行
networksetup -listlocations查看所有可用位置名称 - 复制你常用的位置名(注意英文引号包裹含空格的名称,如
"出差专用") - 脚本中直接调用
networksetup -switchlocation "目标名称"
切换后确保配置立即生效
仅执行 -switchlocation 不会自动重载网络接口,DNS 或 IP 可能延迟生效。建议脚本末尾加入刷新动作:
- 识别当前活跃网口:用
route -n get default 2>/dev/null | awk '/interface:/ {print $2}'获取接口名(如en0) - 执行接口重启:
sudo ifconfig [接口名] down && sudo ifconfig [接口名] up - 或更稳妥地刷新 DNS 缓存:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
封装为可执行脚本示例
新建文件 switch-to-office.sh,内容如下:
#!/bin/bash
# 切换到办公室位置并刷新网络
networksetup -switchlocation "办公室"
INTERFACE=$(route -n get default 2>/dev/null | awk '/interface:/ {print $2}')
if [ -n "$INTERFACE" ]; then
sudo ifconfig "$INTERFACE" down && sudo ifconfig "$INTERFACE" up
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
fi
- 保存后执行
chmod +x switch-to-office.sh - 运行时需输入密码(因含
sudo),后续可配置免密(谨慎操作) - 多个场景可建不同脚本,或加参数支持动态选择位置
进阶:按当前网络环境智能切换
若希望“连上公司 Wi-Fi 就自动切办公室位置”,可用脚本检测 SSID:
- 获取当前 Wi-Fi 名称:
networksetup -getairportnetwork en0 | awk -F': ' '{print $2}' - 匹配后执行对应位置切换,例如:
[[ "$SSID" == "Corp-WiFi" ]] && networksetup -switchlocation "办公室" - 搭配 launchd 或定时任务,实现后台自动响应











