【舔狗必备】 通过Linux计划任务每天定时自动发送天气预报给女神

Linux计划任务每天定时自动发送天气预报

前言:

本人闲来无事,无意间看到官方一篇python文章,也是实现定时发送邮件的功能;奈何学术不精(目前大二,只接触过一年的编程),始终无法实现功能,于是想着向本专业靠拢,说是shell能不能实现呢?于是动手试了一下,还真被我试出来了;功能的核心是Linux对json格式的处理;可能有人会说这个功能没多大用处;但其实是有很多应用场景的,看你们能不能想出来了;

完成这个功能你需要:

  1. 一台云服务器
  2. centos7
  3. 和风天气api
  4. 一个已经开启了smtp服务的邮箱账户

环境准备:

这里我使用的是一台阿里云的服务器,预装Centos7.2;首先要确保我们的服务器能够发送邮件我们要做两个准备:

1.开通邮箱的 smtp服务,这里我以QQ邮箱为例smtp服务
将第一个服务开启后,然后下载授权码;保存到本地,待会儿会用到

2.Linux下安装mailx,一般来说系统都有预装
我们可以使用管道命令查询系统中是否有mailxmailx
如果没有就直接yum安装

yum install -y mailx

然后我们来配置一下mailx

vim /etc/mail.rc

在配置文件的最后加上这几行

set from=xxxx@qq.com  #这里是发送邮件的地址

set smtp=smtp.qq.com:587 #阿里云一定要带上这个端口号,其他云服务商不用

set smtp-auth-user=          #这里是你的邮箱用户名

set smtp-auth-password=     #这里填你刚刚保存的授权码

set smtp-auth=login       #这一行不变

到这里你已经完成了基础配置,你的服务器已经能够进行一些简单的邮件发送功能了,我们可以使用mail命令测试一下:

echo ""|mail -v -s "测试" xxxxx@qq.com #-v是显示发送过程 -s是邮件主题 

你会收到一封空白邮件
测试

重点!

实现每天获取最新的天气状况,我们需要调用和风天气的api,shell命令行对api返回数据的处理是一个难点,也是一个重点,首先我们要注册成为和风的开发者,并获取api key;这里我不做多的介绍,大家可以看其官方的开发文档,已经很详细了;这边我直接演示在命令行的操作
我们首先可以看到他的免费版请求格式:

https://free-api.heweather.net/s6/weather/{
   weather-type}?{
   parameters}

{weather-type}这边我们选择的是forecast参数,返回的是3到十天的预报,Linux这边我们使用的是curl命令,我们可以把返回的数据存到一个txt文件中:

curl 'https://free-api.heweather.net/s6/weather/forecast?location=城市&key=你的key' &> weather.txt

城市填你想要获取的城市,key填你在开发者平台创建应用时获取的key
注意:请求的api一定要打引号,否则curl无法识别?后的内容
这时候已经我们已经把api返回数据写入了weather.txt这个文件中,我们可以cat查看一下:json
是不是头皮发麻,这个时候我们就应该认真阅读和风的开发文档,读懂这些数值的含义,那么我们如何来处理这些数据呢?我们拿cond_txt_d这个参数来举例,官方文档给的描述是:白天天气状况描述,那么我们如何获取到当天的数据呢?
这里就要大家灵活运用管道以及sed命令了:
首先我们要让这些数值的排列看起来整齐一些,我们先

cat weather.txt | sed 's/,/\n/g'

我们将所有的逗号转化为换行符,得到如下输出:在这里插入图片描述
接着我们通过grep找到我们的关键字段:

cat weather.txt |<
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值