cron 执行命令后请求API
在 cron
中执行命令后请求一个 API,可以使用常见的命令行工具,比如 curl
或 wget
。下面是实现的步骤和示例。
1. 使用 curl
请求 API
在 cron
中配置 curl
来请求 API。
例子:定时备份后请求 API
假设你有一个脚本 backup.sh
,执行完毕后需要请求一个 API。可以在 backup.sh
的最后加上 curl
命令:
#!/bin/bash
# 备份命令
borg create --progress /path/to/backup-repo::backup-$(date +%Y-%m-%d) /path/to/data
# 请求 API
curl -X POST https://api.example.com/backup/completed -d '{"status":"success"}' -H "Content-Type: application/json"
在 cron
中设置定时任务:
0 3 * * * /path/to/backup.sh
2. 使用 wget
请求 API
你也可以用 wget
来请求 API,适用于没有安装 curl
的系统。
例子:备份完成后通过 wget
请求 API
在脚本中添加 wget
请求 API:
#!/bin/bash
# 备份命令
borg create --progress /path/to/backup-repo::backup-$(date +%Y-%m-%d) /path/to/data
# 请求 API
wget --post-data='{"status":"success"}' --header='Content-Type: application/json' https://api.example.com/backup/completed
然后将其放入 cron
中,定期执行这个脚本。
3. 直接在 cron
中请求 API
如果不需要复杂的操作,可以直接在 cron
中发出 API 请求。例如,每天凌晨 3 点发送一个 POST
请求:
0 3 * * * curl -X POST https://api.example.com/backup/completed -d '{"status":"success"}' -H "Content-Type: application/json"
注意事项
错误处理:在请求 API 之前可以检查备份是否成功,只有在备份成功时才发送请求:
if [ $? -eq 0 ]; then
curl -X POST https://api.example.com/backup/completed -d '{"status":"success"}' -H "Content-Type: application/json"
else
curl -X POST https://api.example.com/backup/completed -d '{"status":"failure"}' -H "Content-Type: application/json"
fi
日志:为了记录 cron
的输出,可以将命令的输出重定向到日志文件:
0 3 * * * /path/to/backup.sh >> /path/to/logfile.log 2>&1
这样可以确保只有在备份成功时,才会向 API 发送成功状态,否则会发送失败状态。