如何拓展阿里云的新功能——天氣預報
- 關于此
- 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
運行結果:

這就完成了第一步,獲取所需的引數,
ps:獲取到的值不只有以上幾項

格式化之后:

太長就不放完了,大家可以根據自己的需求修改
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


成功!
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!不保存退出
以上です
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/257373.html
標籤:其他
