zoukankan      html  css  js  c++  java
  • 小白的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

     1 #!/bin/bash
     2 workpath="/home/share/scraping/getlj"
     3 cd $workpath
     4 # 进入工作目录
     5 python3 0-save_todaylj.py 2>2-getlj_err.txt
     6 # 输出错误文件
     7 
     8 todaydate=$(date +%F)
     9 # 测试err文件中有无内容,如有发送提醒
    10 if [ -s $workpath/2-getlj_err.txt ];then
    11     # `pwd`/getlj_err.txt也可,pwd=当前工作目录
        # -s等同于test -s测试是否存在文件且不为空,有非空则返回TRUE,在这里意味着有error记录
    12 echo $todaydate:error 13 cat '2-getlj_err.txt' | mail -s "$todaydate getlj ERROR" cityfxckr@qq.com 14 else 15 echo $todaydate:ok 16 cat '1-ljszresult.txt' | mail -s "$todaydate getlj RESULT" cityfxckr@qq.com 17 fi 18 19 # 邮件主题中包含变量时,一定要用双引号才行 20 # 需要将此段代码转换成linux模式即每行结尾只有 (LF),而windows模式是 (CRLF)运行会报错,
       notepad++的编辑-文档格式转换中可以转换
    21 # 发送邮件的内容,此例中的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)

     

    成功,这样每天就可以收到抓取的结果,或者是出现的错误以便及时修改。

  • 相关阅读:
    dotNet程序保护方案
    网络数据包捕获函数库Libpcap安装与使用(非常强大)
    Objectivec 中 nil, Nil, NULL和NSNull的区别
    对象的相等和恒等
    IOS SDK介绍
    iOS内存管理编程指南
    http权威指南读书笔记(三)——http报文
    http权威指南学习笔记(二)
    http权威指南读书笔记(一)
    CentOS 设置环境变量
  • 原文地址:https://www.cnblogs.com/cityfckr/p/12330276.html
Copyright © 2011-2022 走看看