小白的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系统下 ...
随机推荐
- Informatica9.5.1配置域名错误(ICMD_10033,INFASETUP_10002,RSVCSHARED_00021)
错误信息: OutPut : [ICMD_10033] Command [defineDomain] failed with error [[INFASETUP_10002] Cannot creat ...
- 【阿里云IoT+YF3300】12.阿里云IoT Studio入门介绍
阿里云IoT Studio是针对物联网场景提供的生产力工具,可覆盖各个物联网行业核心应用场景,帮助您高效经济地完成设备.服务及应用开发.物联网开发服务提供了移动可视化开发.Web可视化开发.服务开发与 ...
- Java8新特性一点通 | 回顾功能接口Functional Interface
Functional Interface Functional Interface是什么? 功能接口是java 8中的新增功能,它们只允许一个抽象方法.这些接口也称为单抽象方法接口(SAM接口).这些 ...
- ubuntu19配置静态IP并开启SSH远程登陆
前言 从ubuntu从17.10开始,已经不再在/etc/network/interfaces里配置IP,即使配置了也不会生效,而是改成netplan方式 ,配置写在/etc/netplan/文件夹 ...
- windows 通过AppInit加载任意dll
windows操作系统允许将用户提供的dll加载到所有的进程的内存空间中.该功能可以用来做后门持久化.有点类似于linux的ld_preload环境变量.在进程启动的时候,操作系统会将用户提供的dll ...
- C++对于C故有问题的改进
C++继承了所有的C特性,并且提供了更丰富的语法和特性(OOP支持.模板支持等),并且拥有和C语言同样出色的运行效率.针对C语言的固有问题,C++做出了如下的升级: 所有变量都可以在需要使用时再定义( ...
- 【原创】在 ASP.NET Core 3.1 中使用 Senparc.Weixin.Work 企业微信 SDK —— 发送文本消息
下面在 Web 空应用里展示一个简单的例子来实现发送文本消息. 本文目录: 创建 Web 空应用 命令行方式创建 添加SDK引用 命令行方式 进入项目目录 添加包引用 配置和使用SDK 添加appse ...
- 实验14:VLAN间的路由
实验11-1: 单臂路由实现VLAN 间路由 Ø 实验目的通过本实验,读者可以掌握如下技能:(1) 路由器以太网接口上的子接口(2) 单臂路由实现VLAN 间路由的配置Ø 实验拓扑 实验步 ...
- illegal use of this type as an expression
学习MCI时看别人样例手敲代码出现的一个很经典的错误. 在C语言中定义的变量没有放在函数的开头. #include <string.h> #include <windows.h> ...
- POJ_3663_贪心
题目描述: 给你一堆数和一个限定的空间大小,要求求出两个数的和小于等于空间大小的对数. 思路: 贪心,先给一堆数从大到小排序. 第一个数取数组第一个,第二个数从第二个开始依次往后取,只要某个第二个数满 ...