园丁的重击霜冻预报?

园丁的重击霜冻预报?

我想要一个针对园丁的自动霜冻警报作为 bash 脚本。这就是我的想法:

https://askubuntu.com/questions/390329/weather-from-terminal如何将天气预报信息输入终端有很多想法。 (这个可能不错:“对于更短的天气输出http://weather.tuxnet24.de提供来自 Yahoo! 的天气数据以文本和 xml 格式。”?)

现在具有挑战性的部分 - 我不知道该怎么做 - 是编写一个脚本:

  1. 每天检查园丁当地的天气预报数据,
  2. 从天气预报中提取温度数据(比如说接下来的 5 天),
  3. 分析它们以检测 0 度或以下的温度并
  4. 当霜即将来临时,会自动提前提醒用户。

我可以使用哪些工具?有人想尝试/帮助/合作吗?

答案1

这是我编写的一个简短的 bash 脚本,通常可以完成您的需要。这只会检查当前日期和未来 2 天,因为这是 wttr.in 默认返回的内容,但我确信您可以找到一些选项来扩展它(如果需要)。您可能需要使用脚本的邮件发送部分,具体取决于您正在运行的系统以及可用的选项,但如果您陷入困境,这肯定会引起另一个问题。您可以将此脚本添加到您的 crontab 作为日常工作,并接收有关即将到来的冰点温度的电子邮件。

如果农民正在使用 pagerduty 之类的东西(哈哈),您可以将邮件部分更改为 Webhook,通过它向他们发送警报,或者仅通过电子邮件发送 pagerduty 地址。

#!/usr/bin/env bash

json=$(curl -Ss "wttr.in/paris?format=j1")

for ((i=0;i<=2;i++)); do
    date=$(jq -r --arg index "$i" '.weather[$index | tonumber] | .date' <<<"$json")
    temp=$(jq -r --arg index "$i" '.weather[$index | tonumber] | .mintempC' <<<"$json")
    if [[ $temp -le 0 ]]; then
        mail -s "There will be frost on $date ($temp degrees)" [email protected]
    fi
done

相关内容