小白的linux笔记8:linux自动运行爬虫并发送提醒邮件
有了成功运行的爬虫后,希望能每天定时运行,且遇到错误时能及时发出提醒。
发出提醒
可以用mailx发出邮件做提醒。没有的话先安装Yum install mailx。
以qq邮箱为例,需要设置/etc/mail.rc,增加以下行:
1 set smtp=smtp.qq.com
2 set smtp-auth=login
3 set smtp-auth-user=user@qq.com
4 set smtp-auth-password=code //不是登录密码,是stmp的授权密码
5 set ssl-verify=ignore
6 set nss-config-dir=/etc/pki/nssdb //没有的话需要mkdir新建
7 set from="user@qq.com(nickname)"
8 set smtp-use-starttls=yes
同时还需要在qq邮箱中开启IMAP/STMP,并获得授权码:
在邮箱设置-账户-POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务中打开相关选项。
测试一下:mail xxx@aa.com,然后在subjuct后输入主题,回车输入内容,完事后输入.回车。发送成功。
或者:echo '邮件内容' | mail -s '邮件标题' 收件人邮箱。
或者:cat 邮件内容.txt | mail -s '邮件标题' 收件人邮箱
或者:mail -s '邮件标题' 收件人邮箱 < 邮件内容.txt
https://blog.csdn.net/yongren_z/article/details/85119088
https://www.cnblogs.com/huyihao/p/5543125.html
开始用outlook设置,折腾了半天还是失败,而且每次登陆都好慢,干脆放弃了。
还有一个选择是发微信,有空可以再研究一下。http://sc.ftqq.com/3.version
https://blog.csdn.net/qq_19645105/article/details/90173867
写BASH
#!/bin/bash
workpath="/home/share/scraping/getlj"
cd $workpath
# 进入工作目录
python3 -save_todaylj.py >-getlj_err.txt
# 输出错误文件 todaydate=$(date +%F)
# 测试err文件中有无内容,如有发送提醒
if [ -s $workpath/-getlj_err.txt ];then
# `pwd`/getlj_err.txt也可,pwd=当前工作目录
# -s等同于test -s测试是否存在文件且不为空,有非空则返回TRUE,在这里意味着有error记录
echo $todaydate:error
cat '2-getlj_err.txt' | mail -s "$todaydate getlj ERROR" cityfxckr@qq.com
else
echo $todaydate:ok
cat '1-ljszresult.txt' | mail -s "$todaydate getlj RESULT" cityfxckr@qq.com
fi # 邮件主题中包含变量时,一定要用双引号才行
# 需要将此段代码转换成linux模式即每行结尾只有\n(LF),而windows模式是\r\n(CRLF)运行会报错,
notepad++的编辑-文档格式转换中可以转换
# 发送邮件的内容,此例中的txt文件,同样需要时linux模式,否则不会再正文发送,而会变成一个bin格式的附件
邮件主题中变量的设置:
https://stackoverflow.com/questions/20535024/how-to-insert-the-current-date-in-mail-command-in-linux
https://unix.stackexchange.com/questions/383722/adding-date-to-file-name-when-sending-email
https://stackoverflow.com/questions/35920673/sending-mail-with-subject-as-variable
test命令的使用:
https://www.jianshu.com/p/6d55b6c0f350
https://man.linuxde.net/test
https://linuxize.com/post/bash-check-if-file-exists/
if记得要有fi结尾。
定时运行
需要用到crontab功能。https://www.cnblogs.com/ftl1012/p/crontab.html
修改etc/crontab文件,增加要定时运行的程序,并将运行输出记录到runlog.txt中:
0 8 * * * wts . /home/0-rungetlj.sh>>/home/2-runlog.txt /etc/cron.daily
(关于linux的运行级别:https://blog.csdn.net/ltstud/article/details/78683523)
成功,这样每天就可以收到抓取的结果,或者是出现的错误以便及时修改。
小白的linux笔记8:linux自动运行爬虫并发送提醒邮件的更多相关文章
- [转载] 在Linux中,开机自动运行普通用户的脚本程序
FROM:http://blog.csdn.net/sinboy/article/details/2466225 FROM:http://www.2cto.com/os/201006/50680.ht ...
- 【Linux笔记】Linux目录结构
[Linux笔记]Linux目录结构 本文内容整理自网络,以作参考. /:根目录,位于linux文件系统目录结构的顶层,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib ...
- 小白的linux笔记7:批量运行复杂的linux命令组合——BASH简单使用法
linux的BASH就相当于windows下的BAT文件,可以批处理命令.比如写好一个python脚本后,需要在运行时候加参数,但这个参数又不想每次输入,就可以用BASH的方式写好整条命令,然后直接运 ...
- Linux笔记(开机自动将kerne log保存到SD卡中)
有时候为了测试机器的稳定性,需要煲机测试几天的情况,这个时候机器已经封装好,不能再接串口线出来. 为了追溯问题,就需要将log信息保存下来. 于是就需要这样一个功能:系统启动后,自动将kernel的l ...
- Linux笔记之——Linux关机命令详解(转)
原文连接:http://www.jb51.net/os/RedHat/1334.html 在linux下一些常用的关机/重启命令有shutdown.halt.reboot.及init,它们都可以达到重 ...
- [linux笔记]理清linux安装程序用到的(configure, make, make install)
我作为一名经常和linux打交道的程序员,每次在linux安装软件都祈求可以用——apt-get,yum,brew等应用程序管理器安装,有的时候事与愿违,你只能自己编译安装-wtf,说好的美丽世界呢? ...
- linux笔记:linux系统安装-系统分区
分区类型: 1.主分区:最多只能有4个. 2.扩展分区:最多只能有1个:主分区+扩展分区最多有4个:不能写入数据,只能包含逻辑分区. 3.逻辑分区. 格式化: 向磁盘中写入文件系统.会附带地清空磁盘中 ...
- linux笔记:linux软件包管理,软件安装位置
linux软件包简介 软件包分类:1.源码包(用C语言等编写的源代码,没有进行编译):脚本安装包(对源码包进行了安装优化的源码包)优点:开源,可修改可以自由选择所需的功能编译安装,更适合自己的系统,稳 ...
- 【Linux笔记】linux crontab实现自动化任务
在服务器中我们经常需要定时自动让程序自动进行数据备份.程序备份.执行某个进程等等操作,在linux服务器一般使用crontab实现,而windows下使用计划任务实现,crontab是linux系统下 ...
随机推荐
- obj2gltf安装详细教程
在线转换地址:http://52.4.31.236/convertmodel.html 在使用cesium的过程中需要使用到gltf模型,官方推荐使用obj2gltf插件将obj模型转换成gltf格式 ...
- 单点登陆(SSO)
一.背景 在企业发展初期,企业使用的系统很少,通常一个或者两个,每个系统都有自己的登录模块,运营人员每天用自己的账号登录,很方便.但随着企业的发展,用到的系统随之增多,运营人员在操作不同的系统时,需要 ...
- Springboot | 私人订制你的banner
1. 搭建一个springboot模块 2. 配置POM文件 3. 自定义banner 3.1 自定义文字字符图案banner 3.2 自定义图案字符图案banner 自定义banner有什么用呢? ...
- Word文档分节设置页码
在一篇论文中需要将摘要和目录作为一部分设置罗马数字页码,正文部分设置阿拉伯数字页码. 大致效果如下图所示: 这里面用到了分节符,步骤如下: 1 :点击开始菜单栏下 显示/隐藏编辑标记 2:点击插入菜单 ...
- c++中对象的构造和销毁
对象的初始化 如下 ckasss Person { public: ]; char sex; int age; }; Person p={}; //对象初始化 构造数组对象时,需要一个没有参数的构造函 ...
- nginx配置文件的通用语法介绍
nginx的配置文件是ascii文本文件. 比如http{ }这种的是指令块,include mime.types: 这种是指令,include是指令,mime.types指令的参数,指令和参数之 ...
- esp跟ebp跟踪记录
发现文字描述还是太没有快感.上几幅图,来说明这个调试过程更好.此文对于深刻理解ebp,esp是具有长远意义的 可以看到,初始情况下,ebp此时值为0012FEDC,也就是栈帧的地址,而栈顶地址esp值 ...
- 链表基本操作与排序(c语言)
本设计程序用C编写,完成单链表的生成,任意位置的插入.删除,以及确定某一元素在单链表中的位置.实现三种排序算法-冒泡排序.快速排序.合并排序.产生四个长度为100,1000,10000,50000的随 ...
- BZOJ2038 小Z的袜子(莫队之源)
题意+思路: 给你m个区间询问,问每个区间内的$\displaystyle \frac{\sum x^2-(R-L+1)}{(R-L)(R-L+1)} $,其中x为每种数字的个数,用cnt存储: 所以 ...
- 曹工说Spring Boot源码(17)-- Spring从xml文件里到底得到了什么(aop:config完整解析【中】)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...