macOS可通过Automator封装shell脚本,调用networksetup管理网卡启停与服务顺序、route命令控制静态路由,实现多网卡策略一键切换及热键触发。
macos 本身不提供图形化界面一键切换多网卡路由策略的功能,但借助 automator 封装 shell 脚本,配合 networksetup 和 route 命令,可实现「按需启用/禁用特定网卡」「调整服务顺序」「添加或删除静态路由」等关键运维操作,并通过热键快速触发。
明确你要切换的网络行为类型
多网卡配置切换不是单一动作,需先确认目标场景:
- 内外网同时可用(双出口):例如 Wi-Fi 走外网、有线网卡走内网,需设置路由表,让 10.0.0.0/8 流量强制走 en1,其余走 en0
- 主备网卡切换:如日常用 Wi-Fi,插上网线后自动停用 Wi-Fi 或降级其优先级
- 临时禁用某张网卡:比如调试时关闭蓝牙 PAN 或 Thunderbolt Bridge 避免干扰
- 恢复默认网络状态:一键还原所有网卡启用状态、服务顺序和路由规则
用 networksetup 管理网卡启停与服务顺序
networksetup 是 macOS 内置命令,能直接控制网络服务开关及排序,无需第三方工具:
- 查看所有网络服务:
networksetup -listallnetworkservices - 关闭指定服务(如禁用蓝牙共享):
networksetup -setnetworkserviceenabled "Bluetooth PAN" off - 启用服务:
networksetup -setnetworkserviceenabled "Wi-Fi" on - 查看当前服务顺序(决定 default 路由走向):
networksetup -listnetworkserviceorder - 重排服务顺序(需先获取 UUID,再用
-ordernetworkservices):
例如将 “Wi-Fi” 置顶:networksetup -ordernetworkservices "Wi-Fi" "USB 10/100/1000 LAN"
注意:修改服务顺序会直接影响系统默认网关选择,是实现“插线即切内网”的基础步骤。
用 route 命令精细控制流量走向
当需要让某段 IP(如公司内网 172.16.0.0/12)固定走有线网卡,而其他流量走无线,就得操作路由表:
- 添加静态路由(指向内网网关):
sudo route add -net 172.16.0.0 -netmask 255.240.0.0 172.16.1.1 -interface en1 - 删除该路由:
sudo route delete -net 172.16.0.0 -netmask 255.240.0.0 - 查看当前路由表:
netstat -rn | grep -E "(en0|en1|default)"
这类操作必须加 sudo,且在 Automator 中运行 shell 脚本前,需确保终端已获「完全磁盘访问」权限(系统设置 > 隐私与安全性 > 完全磁盘访问)。
用 Automator 封装并绑定热键
把上述命令组合成可一键执行的自动化流程:
- 打开 Automator,新建「快速操作」
- 添加「运行 Shell 脚本」操作,设为
/bin/zsh,粘贴完整逻辑(含判断、启用/禁用、route 增删) - 保存为「切换至内网模式」或「恢复默认网络」等清晰名称
- 进入「系统设置 > 键盘 > 键盘快捷键 > 服务 > 快速操作」,为其分配热键(如 ⌘⌥⇧+N)
进阶建议:用单脚本实现智能切换。例如检测当前是否已有 172.16.0.0 路由,有则删除并关闭有线服务,无则添加并启用——这样按一次热键就能来回切换,无需记忆状态。


















