mac可通过launchd每30秒检测默认ip是否匹配192.168.10.x网段,匹配即执行sudo shutdown -h now关机;脚本使用原生命令,无需第三方工具,需配置plist文件并加载服务。

Mac需要在连接到公司内网(如192.168.10.x网段)时自动关机,避免下班后忘记关闭设备造成电力浪费或安全风险,这种基于网络环境触发的关机不能靠系统内置的“节能器调度”实现,必须借助网络状态检测与脚本联动。
用网络检测脚本配合launchd实现IP匹配关机
该方法实时监听当前默认路由的IP地址,仅当匹配指定网段时才执行关机,不依赖第三方工具,全程使用macOS原生组件。
第一步:新建脚本文件,路径为/usr/local/bin/check-and-shutdown.sh,内容如下:
#!/bin/bash
DEFAULT_IP=$(ipconfig getifaddr $(route -n get default | awk '/interface: / {print $2}'))
if [[ "$DEFAULT_IP" =~ ^192\.168\.10\. ]]; then
sudo shutdown -h now
fi
第二步:赋予执行权限:【chmod +x /usr/local/bin/check-and-shutdown.sh】
第三步:创建launchd配置文件/Library/LaunchDaemons/com.mac.network-shutdown.plist,内容需严格按以下格式(注意替换Label和ProgramArguments中的路径):
第四步:加载服务:【sudo launchctl load /Library/LaunchDaemons/com.mac.network-shutdown.plist】。此后脚本每30秒检查一次当前IP,一旦匹配192.168.10.x即立即关机。
用快捷指令+网络判断实现轻量级触发
适合不想接触终端、仅需单次触发的用户,但无法后台持续监听,需配合其他条件手动或定时启动。
方法一:快捷指令中嵌入网络判断逻辑
打开“快捷指令”App → 点击右上角“+” → 添加操作 → 搜索“运行shell脚本” → 在脚本框中粘贴:
if ifconfig | grep -q "192\.168\.10\."; then osascript -e 'tell app "System Events" to shut down'; fi
方法二:用“获取当前Wi-Fi信息”动作筛选SSID再关机
添加操作 → 搜索“获取当前Wi-Fi信息” → 添加“如果”动作 → 设定条件为“Wi-Fi名称包含‘CorpNet’” → 在“则”分支中添加“运行AppleScript” → 脚本内容为:osascript -e 'tell app "System Events" to shut down'
注意:此方法依赖SSID名称而非真实IP,若公司多SSID共用同一网段,可能漏判。
验证当前IP是否匹配目标网段
在终端中直接运行以下命令,可即时确认脚本逻辑是否生效:
ipconfig getifaddr $(route -n get default | awk '/interface: / {print $2}') | grep -E '^192\.168\.10\.'
若返回IP地址,说明当前处于目标网络;若无输出,则未匹配。这是调试脚本前必须验证的一步,否则后续所有配置都无效。











