小白的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系统下 ...
随机推荐
- nginx白名单黑名单设置
nginx白名单黑名单设置 白名单设置,访问根目录 location / { allow 123.34.22.155; allow 33.56.32.1/100; deny all; } 黑名单设置, ...
- ROS中3D机器人建模(五)
一.创建一个差速驱动移动机器人模型 前面我们已经创建了一个7-DOF机械臂机器人模型,接下来我们将创建一个差速机器人模型,差速轮式机器人在机器人底盘的两端安装两个轮子, 整个底盘由一个或两个脚轮支撑. ...
- 15、WAN
WAN wide area network 覆盖较大地理范围的数据通信网络使用网络提供商和电信公司所提供的传输设施传输数据 通过不同WAN协议,将LAN延伸到远程站点的其他LAN广域网接入处于OSI七 ...
- C语言宏的神奇写法:语句块作为参数,算半个函数式编程?
我想要写几个循环做测试代码,每次都写 `for(size_t i = 0; i < n; i++)` 很烦人,然后就灵机一动,能不能用宏实现,然后就写出了: #define repeat(n, ...
- selenium控制浏览器操作
selenium控制浏览器操作 控制浏览器有哪些操作? 控制页面大小 前进.后退 刷新 自动输入.提交 ........ 控制页面大小,实例: # -*- coding:utf-8 -*- from ...
- sql中常量和变量的引用
String name =jtf.getText().trim(); String sql="select * from stu where stuname=' "+name+& ...
- 【C++】应用程序无法正常启动0xc000007b
在Windows平台编程时,或运行应用程序时,偶尔会遇到“应用程序无法正常启动0xc000007b”或“缺少***.dll”的问题, 首先需要考虑的就是程序相关联的dll有没有放到系统环境中,dll通 ...
- Github搜索技巧-如何使用github找到自己感兴趣的项目(转载)
Github现在不仅仅作为一个版本控制工具,更是一个开源的仓库,里面不但有优秀的开源代码,电子书,还有一些五花八门的项目,有些国家的法律也放在上面,作为程序员如何找到自己感兴趣的项目就非常重要了! 欢 ...
- 手把手带你阅读Mybatis源码(二)执行篇
前言 上一篇文章提到了MyBatis是如何构建配置类的,也说了MyBatis在运行过程中主要分为两个阶段,第一是构建,第二就是执行,所以这篇文章会带大家来了解一下MyBatis是如何从构建完毕,到执行 ...
- [Effective Java 读书笔记] 第7章 方法
第39条 必要时进行保护性拷贝 对于可变类,如果作为参数传入到自己的类里,并作为自己类的数据使用存储时,需要进行保护性拷贝,比如Date是可变的,如果传入一个Date类,最好做一个保护性拷贝,以免在调 ...