macOS 运维:通过 Automator 实现网络连接状态切换

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-Finetworksetup -setairportpower "Wi-Fi" on
    关闭 Wi-Finetworksetup -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

如何利用日志中的 $connection?requests 变量审计单个长连接链路上不同路径请求的连续切换状态
上一篇 2026-06-25 10:20
如何利用HTML制作带阴影的悬浮卡片?通过CSS box-shadow与hover位移
下一篇 2026-06-25 10:20

相关推荐