cron 执行命令后请求API

cron 中执行命令后请求一个 API,可以使用常见的命令行工具,比如 curlwget。下面是实现的步骤和示例。

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 发送成功状态,否则会发送失败状态。