macos shortcuts 无法原生监听网络状态变化,但可通过系统事件触发(如 launchd 监听 networkchanged)+ shell 脚本判断(scutil/curl)+ 文件写入或快捷指令调用,实现被动响应式网络自动化;亦可作为手动/定时触发的“一键网络运维面板”,集成重置网卡、ping 测试、页面可达性检测及跨应用跳转等闭环操作。

macOS Shortcuts 本身不直接监听网络状态变化(如 Wi-Fi 连接/断开、IP 变更、DNS 可达性),但它能通过组合系统能力与外部触发机制,实现「感知网络状态 → 执行对应动作」的自动化任务流。关键不是让 Shortcuts 主动轮询,而是利用 macOS 原生事件源触发它,并用 Shell 脚本或 AppleScript 补足判断逻辑。
用系统事件触发 + Shell 判断实现网络响应
Shortcuts 的「自动化」标签页支持「到达某位置」「时间」「新文件加入文件夹」等触发器,但没有原生“网络连接变更”选项。可靠做法是:
- 让 macOS 系统在联网事件发生时,生成一个可被 Shortcuts 捕获的信号(例如写入特定文件、修改 plist、触发 launchd 任务)
- 再由 Shortcuts 监听该信号(如文件变动、定时检查),调用 Shell 脚本确认当前网络状态并执行分支操作
比如:当接入家庭 Wi-Fi 时自动启用代理,断开时关闭;或检测到无外网时弹窗提醒并重启网络服务。
构建可落地的网络状态响应链路
- 在
/Users/你/Library/LaunchAgents/下创建com.example.network.watch.plist,监听networkChanged事件(需配合scutil --watch或ipconfig waitall) - 该 plist 配置为:当网络配置变更时,运行一段 Shell 脚本(如
~/Library/Scripts/check-network.sh) - 脚本中用
scutil --nc list | grep -q 'Connected'或curl -sf https://1.1.1.1 > /dev/null && echo online || echo offline判断连通性 - 根据结果,脚本向固定路径(如
~/Library/Caches/network-state.txt)写入online或offline,或直接调用shortcuts run "切换代理模式"(需提前开启「允许不受信任的快捷指令」)
这样,Shortcuts 不需要主动 polling,而是被动响应系统级事件,再做精准决策。
用 Shortcuts 直接执行网络诊断与修复动作
即使不能实时监听,Shortcuts 仍可作为「一键网络运维面板」:
- 添加「运行 Shell 脚本」操作,执行
sudo ifconfig en0 down && sleep 1 && sudo ifconfig en0 up(重置网卡) - 接入「获取剪贴板内容」+「运行 Shell 脚本」,把 IP 地址快速 ping 并显示延迟(
ping -c 3 $(pbpaste) | tail -2) - 组合「获取指定 URL 内容」+「文本包含」判断是否能访问公司登录页,失败则自动打开「网络偏好设置」(
open systempreferences:com.apple.preference.network)
这些操作无需后台常驻,适合手动触发或定时检查(如每15分钟运行一次网络连通性快检)。
跨应用联动提升响应闭环能力
- 结合 Maccy:将最近一次
ping结果存入剪贴板,再用 Maccy 的SelectIntent 快速回溯历史测试记录 - 调用 MindNode URL Scheme:网络异常时自动生成「故障排查导图」——
mindnode://new?title=Network%20Issue%20$(date +%H:%M) - 用
openURL Scheme 打开x-apple.systempreferences:com.apple.preference.network,直达网络设置页,避免手动导航
所有动作都封装进单个 Shortcuts,命名如「网络健康快检」,绑定 ⌘⌥N 快捷键,3 秒内完成诊断+反馈+跳转。
不复杂但容易忽略











