macOS虽无原生一键切换网络功能,但可通过Automator封装networksetup命令实现Wi-Fi开关、位置切换、代理启停及智能状态翻转,并支持热键绑定与菜单栏调用。
macos 本身不提供“一键切换网络连接状态”的原生按钮,但通过 automator 封装 shell 命令,可以快速实现 wi-fi 开关、代理启停、位置切换等常见运维操作,并绑定热键或添加到菜单栏,大幅提升日常效率。
用 Automator 快速开关 Wi-Fi
系统未开放直接控制 Wi-Fi 硬件的 API,但可通过 networksetup 命令间接启用/禁用对应服务:
- 新建 Automator「快速操作」→ 添加「运行 Shell 脚本」动作
- Shell 类型选
/bin/zsh,粘贴以下命令(以服务名 “Wi-Fi” 为例):
开启 Wi-Fi:networksetup -setairportpower "Wi-Fi" on
关闭 Wi-Fi:networksetup -setairportpower "Wi-Fi" off - 保存为「开启 Wi-Fi」和「关闭 Wi-Fi」两个独立操作
- 在「系统设置 > 键盘 > 键盘快捷键 > 服务」中启用并分配热键(如 ⌘⌥⇧+W)
用 Automator 切换网络位置
网络位置(Location)是 macOS 内置的配置组机制,适合预设多套完整网络参数(含代理、DNS、服务顺序等):
- 先在「系统设置 > 网络 > 编辑位置」中创建至少两个位置,例如「家庭」「公司」
- 每个位置内分别配置好 Wi-Fi、以太网、代理、DNS 等参数并保存
- 在 Automator 中新建「快速操作」,添加「运行 Shell 脚本」,内容为:
networksetup -switchlocation "家庭"(替换为你实际的位置名) - 同理再建一个切换到「公司」的操作,分别绑定不同热键
- 切换后无需重启,系统会立即应用该位置下所有已启用服务的完整配置
用 Automator 控制系统代理开关
代理设置属于网络服务的子项,Automator 可精准调用 networksetup 操作:
- 确认当前活跃服务名:终端执行
networksetup -listallnetworkservices | head -n2 - 「开启代理」脚本示例(HTTP + HTTPS):
networksetup -setwebproxy "Wi-Fi" 127.0.0.1 8080<br>networksetup -setsecurewebproxy "Wi-Fi" 127.0.0.1 8080
- 「关闭代理」脚本示例:
networksetup -setwebproxystate "Wi-Fi" off<br>networksetup -setsecurewebproxystate "Wi-Fi" off
- 建议额外加一行
killall cfprefsd强制刷新系统偏好设置缓存,避免界面显示滞后
进阶:单热键实现“智能切换”
不想记两套快捷键?可用一个热键完成“开→关”或“关→开”的自动判断:
- 在「运行 Shell 脚本」中使用以下逻辑(以 Wi-Fi 代理为例):
state=$(networksetup -getwebproxy "Wi-Fi" | head -n1 | awk '{print $2}')<br>if [[ "$state" == "Yes" ]]; then<br> networksetup -setwebproxystate "Wi-Fi" off<br>else<br> networksetup -setwebproxy "Wi-Fi" 127.0.0.1 8080<br>fi - 该脚本读取当前 HTTP 代理状态,自动反向执行,更符合直觉操作习惯
- 注意:需确保服务名(如 “Wi-Fi”)与你实际使用的名称完全一致,大小写敏感
文章来自机圈观察员网,发布者:,转载请注明出处:https://www.jqgcy.com/shoujipingce/21064.html