使用 cURL 获取 JSON 的 Cronjob。在写入文件之前检查响应是否不为空

使用 cURL 获取 JSON 的 Cronjob。在写入文件之前检查响应是否不为空

我正在运行 Ubuntu,并有一个简单的 cronjob 来获取远程 JSON 文件并将其(覆盖)写入服务器。

*/15 * * * * /usr/bin/curl -m 120 -s https://path/to/remote/json.json > /store/json/here.json

但是,我需要确保外部 JSON 在覆盖服务器上的 JSON 文件之前实际返回数据。

我怎样才能实现这个目标?我找到了一些直接在 bash 中执行此操作的方法,但当我放入 crontab 时似乎不起作用。

答案1

编写一个简短的 shell 脚本并从 crontab 调用该脚本。

该脚本可能看起来像

#!/bin/sh

PATH=/usr/bin:$PATH

cd /store/json || exit 1

if curl -m 120 -s https://path/to/remote/json.json >here.json.tmp &&
    [ -s here.json.tmp ]
then
    mv here.json.tmp here.json
else
    rm here.json.tmp
fi

测试-s真的如果给定文件的大小大于零。

相关内容