如何用阿里云给自己发送天气预报

如何拓展阿里云的新功能——天气预报

  • 关于此
    • STEP 1:创建weather.sh文件(获取接口回调)
    • STEP 2:调用sendemail,发送至邮箱
    • STEP 3:设置定时发送

关于此

前期准备:
1、阿里云服务器~~(本人为轻量级服务器,重置为宝塔面板)~~ (不重要,其他服务器均可)
2、一个天气软件的API接口(如和风天气:链接)
3、以下均为调用和风天气的API作为示例,其他API可以自己修改curl中的值
4、有关于和风天气API不会获取key的话,可以评论到时候加进来~~(不会吧不会吧不会真有人不会注册吧)~~
5、纯linux萌新,代码能优化地方很多,本篇主实现发送天气预报的功能

STEP 1:创建weather.sh文件(获取接口回调)

先行创建weather.sh文件(用于调用API接口获取返回值)
代码如下:

sudo nano weather.sh

然后就
nano: command not found
这是因为没有安装nano,所以需要安装一下

yum install nano

然后按Y确认即可
同时在weather.sh文件中需要用到jq(对json文件进行操作),提前安装

yum install jq

接下来就可以编辑weather.sh文件了

#!/usr/bin/env bash
CITY=你的城市
TOKEN=你的key
WEATHER=$(curl "https://free-api.heweather.net/s6/weather?location=${CITY}&key=${TOKEN}")
Date=$(echo ${
      WEATHER} | jq -r '.HeWeather6[0].daily_forecast[0].date')
Day=$(echo ${
      WEATHER} | jq -r '.HeWeather6[0].daily_forecast[0].cond_txt_d')
Night=$(echo ${
      WEATHER} | jq -r '.HeWeather6[0].daily_forecast[0].cond_txt_n')
Max=$(echo ${
      WEATHER} | jq -r '.HeWeather6[0].daily_forecast[0].tmp_max')
Min=$(echo ${
      WEATHER} | jq -r '.HeWeather6[0].daily_forecast[0].tmp_min')
Wind=$(echo ${
      WEATHER} | jq -r '.HeWeather6[0].daily_forecast[0].wind_dir')
Txt=$(echo ${
      WEATHER} | jq -r '.HeWeather6[0].lifestyle | values[].txt')
SUGGESTIONS="今天是"${Date}"。\n天气由"${Day}"到"${Night}"。\n最高气温为"${Max}"度,最低气温为"${Min}"度。\n风向为:"${Wind}"。\n今日建议:"${Txt}
# echo ${Txt}
echo ${SUGGESTIONS}

以下是代码的解释

  • CITY:你的城市
  • TOKEN:你的key
  • WEATHER:调用API接口,并且返回值保存于WEATHER
  • Date:今天日期
  • Day:白天天气
  • Night:晚上天气
  • Max:最高温度
  • Min:最低温度
  • Wind:风向
  • Txt:建议
  • SUGGESTIONS:以上总和(邮件主体)
  • jq -r 如果过滤的结果是一个字符串,那么直接写到标准输出(去掉字符串的引号)

接下来,运行该文件

bash weather.sh

运行结果:
如何用阿里云给自己发送天气预报_第1张图片
这就完成了第一步,获取所需的参数。
ps:获取到的值不只有以上几项

如何用阿里云给自己发送天气预报_第2张图片
格式化之后:
如何用阿里云给自己发送天气预报_第3张图片
太长就不放完了,大家可以根据自己的需求修改

STEP 2:调用sendemail,发送至邮箱

首先需要安装sendemail

yum install sendemail

weather.sh中添加sendemail配置

SERVER="smtp.qq.com:587"
FROM="你的邮箱"
TO="你的邮箱"
SUBJECT="天气预报 $(date)"
MESSAGE="${SUGGESTIONS}"
CHARSET="utf-8"
USERNAME="你的邮箱"
PASSWORD="授权码"

sendemail \
        -f ${FROM} \
        -t ${TO} \
        -u ${SUBJECT} \
        -s ${SERVER} \
        -m ${MESSAGE} \
        -xu ${USERNAME} \
 	-xp ${PASSWORD} \
        -v -o message-charset=${CHARSET}

其中

  • smtp.qq.com:587为邮箱服务器,本人使用QQ邮箱,其他邮箱请记得修改
  • 授权码登陆你的QQ邮箱,在设置-账户里边选择开启SMTP服务,获取的授权码


    然后运行试试
bash weather.sh

如何用阿里云给自己发送天气预报_第4张图片
如何用阿里云给自己发送天气预报_第5张图片
成功!

STEP 3:设置定时发送

首先安装

yum install crontab

进入编辑

crontab -e

输入

0 7 * * * bash "/root/weather.sh" 

ps:

  • 从左到右前五个分别为分钟 小时 每周的某一天
  • /root/weather.sh修改为weather.sh文件所在目录
  • 如以上为:每日7点发送至邮箱

以及退出&&保存

  • 按esc退出编辑
  • 按住shift+wq保存,同时在在这里插入图片描述
    中输入wq保存并退出,q!不保存退出

以上です

你可能感兴趣的:(服务器)