nodejs 定时调用shell脚本来备份数据库和日志文件并发送到邮箱

前端之家收集整理的这篇文章主要介绍了nodejs 定时调用shell脚本来备份数据库和日志文件并发送到邮箱前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

安装mailx,靠它来发送邮件

  1. yum install mailx

编辑配置文件

  1. vim /etc/mail.rc #添加如下内容
  2.  
  3. set from=xxxx@163.com
  4. set smtp=smtp.163.com
  5. set smtp-auth-user=xx@qq.com
  6. set smtp-auth-password=xxx
  7. set smtp-auth=login
  8.  
  9. ---说明
  10. from:对方收到邮件显示的发件人
  11. smtp:指定第三方发邮件smtp服务器地址
  12. set smtp-auth-user:第三方发邮件用户名
  13. set smtp-auth-password用户名对应的密码,有些邮箱填的是授权码
  14. smtp-authSMTP的认证方式,默认是login,也可以改成CRAM-MD5PLAIN方式

linux脚本文件源码(注意一定要直接在linux系统里直接编辑,不然创建文件的后缀名会带问号!!!):

  1. #!/bin/bash
  2. echo "开始"
  3. #备份数据库
  4. MysqLdump -uroot -p数据库密码 数据库名字 > /home/wwwroot/bak/`date +%Y_%m_%d`.sql
  5. echo '备份数据库完毕'
  6. #备份日志(将日志文件复制到备份数据库文件夹里)
  7. oldlog=/home/wwwlogst/web.log
  8. newlog=/home/wwwroot/bak/`date +%Y_%m_%d`.log
  9. cp ${oldlog} ${newlog}
  10. echo "" > ${oldlog}
  11. echo '备份日志完毕'
  12. #打包文件
  13. name= /home/wwwroot/`date +%Y_%m_%d_%H_%M_%s`.zip
  14. old= /home/wwwroot/bak
  15. zip -r ${name} ${old}
  16. echo '打包文件夹完毕'
  17. #发送邮件
  18. echo `date +%Y_%m_%d数据库备份` | mail -s `date +%Y_%m_%d备份邮件` -a ${name} 你的邮箱@qq.com
  19. echo '发送邮件完毕'
  20. echo "全部完毕"

nodejs 定时调用脚本的源码

  1. /**
  2. * Created by Administrator on 2018/2/25 0025.
  3. */
  4. var https = require('http');
  5. var schedule = require('node-schedule');
  6. var exec = require('child_process').exec;
  7. var cmdStr = 'sh /home/wwwroot/myemail.sh';//这里面写你要执行的命令就行
  8.  
  9. var rule = new schedule.RecurrenceRule();
  10. // rule.second = [0,10,20,30,40,50];//隔十秒
  11. rule.hour =23;rule.minute =55;rule.second =0;//每天23点55分执行
  12. var j = schedule.scheduleJob(rule,function(){
  13. exec(cmdStr,function(err,stdout,stderr){
  14. console.log("已执行");
  15. });
  16. console.log('现在时间:',new Date());
  17. });

猜你在找的Bash相关文章