如何在Curl与Grep组合中取反结果并实现Mac定时通知?
解决方案
1. 修改匹配逻辑并封装为Bash脚本
原脚本逻辑是匹配到"Thanks for checking"时触发通知,我们需要取反逻辑——当页面不包含该文本(即有促销)时发送通知。
创建名为wayfair_monitor.sh的脚本,内容如下:
#!/bin/bash # 配置参数 TARGET_PHONE="5555551234" WAYFAIR_URL="https://wayfair.com" SEND_MESSAGE_SCRIPT="/Users/你的用户名/SendMessage.scpt" # 替换为实际脚本的绝对路径 # 抓取页面并检查是否不含目标文本 if ! /usr/bin/curl -s "$WAYFAIR_URL" | /usr/bin/grep -q "Thanks for checking"; then # 触发iMessage通知 /usr/bin/osascript "$SEND_MESSAGE_SCRIPT" "$TARGET_PHONE" "$WAYFAIR_URL" fi
说明:
!用于取反后续命令的执行结果,即grep未匹配到目标文本时进入通知分支- 使用命令的绝对路径(
/usr/bin/curl、/usr/bin/grep、/usr/bin/osascript),避免crontab环境变量缺失导致命令找不到 - 替换
SEND_MESSAGE_SCRIPT为你实际存放SendMessage.scpt的绝对路径
给脚本添加执行权限:
chmod +x wayfair_monitor.sh
2. 配置crontab实现每分钟执行
打开crontab编辑界面:
crontab -e
添加以下配置(替换为wayfair_monitor.sh的绝对路径):
* * * * * /Users/你的用户名/wayfair_monitor.sh >> /Users/你的用户名/wayfair_monitor.log 2>&1
说明:
* * * * *表示每分钟执行一次>> ...log 2>&1用于记录脚本的输出和错误信息,方便排查问题
3. 关键注意事项
- Messages权限:在「系统设置」→「隐私与安全性」→「自动化」中,允许终端(或
osascript)控制Messages应用,避免通知发送失败 - 反爬风险:每分钟请求一次可能触发网站反爬机制,可根据实际情况调整频率(比如每5分钟执行:
*/5 * * * *) - 脚本测试:先手动执行脚本验证逻辑是否正常:
./wayfair_monitor.sh
内容的提问来源于stack exchange,提问作者CaptainNewb
相关产品推荐
相关产品推荐

