一. 爬取APP数据,并且存放到一个临时的文件gold中去,这是最原始的数据
curl 'https://ai.cmbchina.com/MBWebService/AjaxMetModuleInfo.ashx?pageID=C8455BD9-8AD4-4B56-A193-22142C9EB3C1&moduleID=AC730DC5-8F5F-46BE-9DB4-9273E26205EC&ModuleName=MetPrc&randnum=0.21273008013564' > /tmp/gold
二.解析数据,将数据中有用的内容通过jq解析出来
(关于jq的使用的方法这里不做介绍)
cat /tmp/gold | jq '{name:.scrollpgoldmsg[0].prdName,price:.scrollpgoldmsg[0].latestPrice,down:.scrollpgoldmsg[0].upDownValue,code:.scrollpgoldmsg[0].prdCode,range:.scrollpgoldmsg[0].upDownRange}' >> /tmp/gold_price.txt
cat /tmp/gold | jq '{name:.scrollpgoldmsg[1].prdName,price:.scrollpgoldmsg[1].latestPrice,down:.scrollpgoldmsg[1].upDownValue,code:.scrollpgoldmsg[1].prdCode,range:.scrollpgoldmsg[1].upDownRange}' >> /tmp/gold_price.txt
cat /tmp/gold | jq '{name:.scrollpgoldmsg[2].prdName,price:.scrollpgoldmsg[2].latestPrice,down:.scrollpgoldmsg[2].upDownValue,code:.scrollpgoldmsg[2].prdCode,range:.scrollpgoldmsg[2].upDownRange}' >> /tmp/gold_price.txt
三.发送邮件,既然已经得到了爬取到的数据,接下来就是将内容发送给用户
# 先定义了一些相当于全局变量的东西,方便下面的修改
MAIL_FROM='xxxxxx@qq.com' # 发件人
MAIL_SUBJECT='the_gold_price' # 邮件主题
MAIL_CONTENT=`cat /tmp/gold_price.txt` # 邮件的正文内容
MAIL_CONTENT_FILE="/tmp/today_gold_price.txt" # 临时存放邮件内容的文件
MAIL_SMTP='smtp://smtp.qq.com' #使用的邮箱服务器地址
MAIL_USER='xxxxxx@qq.com' # 此处应当填写自己想要用来发送邮件的邮箱的地址
MAIL_PASSWORD='xxxxxx' # 获取的邮箱授权密码
USER_LIST='/home/lk/Downloads/SHELL/CURL_App_Example/users.txt'
# 上面的USER_LIST填写的是事先存好的目标客户的邮箱账号的文档(要写绝对路径)
# 循环读取用户列表,向每一个用户发送邮件
cat ${USER_LIST} | while read MAIL_TO
do
# 创建邮件内容
echo "From:${MAIL_FROM}
To:$MAIL_TO
Subject:$MAIL_SUBJECT
$MAIL_CONTENT "> ${MAIL_CONTENT_FILE}
# 发邮件
curl --verbose -s --url "${MAIL_SMTP}" --mail-from "${MAIL_FROM}" --mail-rcpt ${MAIL_TO} --upload-file ${MAIL_CONTENT_FILE} --user "${MAIL_USER}:${MAIL_PASSWORD}"
done
# 删除所有的临时文本
rm ${MAIL_CONTENT_FILE}
rm /tmp/gold
rm /tmp/gold_price.txt
四.整理代码脚本
首先,将上述所有代码整理好,比如说统一放到一个叫做send_mail.sh的脚本中,再准备一个存有所有目标客户的邮箱地址的的users.txt文档(一个邮箱地址一行) 这里一定要记得文件的绝对路径地址,不清楚的可使用pwd 命令查看当前所在目录。【完整代码在文末有链接】
五.设置定时任务
1.~~$ crontab –l
命令来查看系统是否已经安装crontab,若已经安装,则出现下图
若没有安装,使用~~$ sudo apt-get install cron
下载安装即可。
2.~~$ crontab –e
使用该命令设置自己的定时任务
第一次进入使用应该是这样的
选择编辑器,这里选择2
之后在进入便不会再次选择,在末尾加入的这一行表示在每天下午19:44执行后面目录下的脚本(注意也是绝对路径)
这里根据注释中的提示简单解释一下这句话的含义:
m h dom mon dow command 分别是(minute; hour; day of month; month; day of week)的缩写
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件
需要注意的是在编写command指令之前要在终端进行测试是否能够执行。
3.开启cron服务,使用命令为:sudo service crond start
开启后可以查看此时的状态,使用命令sudo service crond status
即可查看,根据途中标红的命令行便可以知道,已经执行了定时任务
另外通过 crontab –l
命令也可以查看锁着定的定时任务
下面介绍一下定时任务服务相关的操作命令:
crontab -l //查看设置的所有定时任务
sudo service cron start //启动服务
sudo service cron stop //关闭服务
sudo service cron restart //重启服务
注意:若是发现定时任务执行了,但是似乎没有作用,第一反应便是查看脚本中的路径问题一定得是绝对路径,若是依旧有问题,发现还有图中这条命令,可以尝试sudo apt-get install -y postfix
下载postfix
源码地址(send_mail.sh即是):https://gitee.com/lk0423/shell_script