shell邮件发送脚本

news2025/1/16 16:02:09

先上整体代码

text.sh

#!/bin/bash

# 设置收件人邮箱
to="123456@qq.com"

# 设置发件人邮箱
from="21331@qq.com"

# 设置邮件主题
subject="Test Email"

# 设置邮件内容
body="This is a test email."

# 发送邮件
echo "${body}" | mail -s "${subject}" -r "${from}" "${to}"

再说详细配置,以及思路

一.配置qq邮箱(需要生成授权码)

QQ邮箱-POP服务开启步骤:

1、使用电脑登录mail.qq.com,进入【设置】;

 

2、换到【账户】选项;

 

3、在POP3/IMAP… CalDAV服务下,将【POP3/SMTP服务】开启;

 

4、通过扫一扫/一键验证/手机令牌/短信验证方式获取授权码,并记住此授权码

 

(注:若POP3/SMTP已开启,直接点击生成授权码,使用授权码登录第三方客户端。用于登录TIM);

 

5、将收取选项从最近30天改为全部,并勾选以下四个选项;

 

6、点击【保存更改】完成设置,使用授权码登录邮箱。 

二.配置linux环境

1.直接运行以下命令自动追加内容

#未加密的发送方式通过25端口,会被公有云封掉.
cat >>/etc/mail.rc <<EOF
set from=12121@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=12121@qq.com
set smtp-auth-password=授权码
set smtp-auth=login
EOF

#加密的方式465端口
cat >>/etc/mail.rc <<EOF
set nss-config-dir=/etc/pki/nssdb/          #加密方式配置
set smtp-user-starttls                      #加密方式配置
set ssl-verify=ignore                       #加密方式配置
set from=12121@qq.com                       #配置发件人
set smtp=smtps://smtp.qq.com:465            #配置使用qq邮箱发送邮件,不加密方式参考上面
set smtp-auth-user=12121@qq.com             #邮箱名
set smtp-auth-password=授权码                #授权码
set smtp-auth=login                         #认证形式
EOF

2.或者在根目录下找到/etc/mail.rc文件

在最后添加(未加密采用未加密的,想用加密采用加密的)

#采用未加密:
set from=12121@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=12121@qq.com
set smtp-auth-password=授权码
set smtp-auth=login

#采用加密
set nss-config-dir=/etc/pki/nssdb/          #加密方式配置
set smtp-user-starttls                      #加密方式配置
set ssl-verify=ignore                       #加密方式配置
set from=12121@qq.com                       #配置发件人
set smtp=smtps://smtp.qq.com:465            #配置使用qq邮箱发送邮件,不加密方式参考上面
set smtp-auth-user=12121@qq.com             #邮箱名
set smtp-auth-password=授权码                #授权码
set smtp-auth=login  

三.运行text.sh(三种方式都可以运行)

1. bash text.sh
指明先用bash解析器解析
如果bash不存在 才会使用默认解析器
2. ./text.sh
./xxx.sh :先按照 文件中#!指定的解析器解析
如果#!指定指定的解析器不存在 才会使用系统默认的解析器
3. . text.sh
直接使用默认解析器解析(不会执行第一行的#!指定的解析器)但是第一行还是要写的

(注意:脚本文件权限问题) 

如果此时成功了,便可以收到邮件,如果没有继续往下(一般是不会发送成功)

四.报错

#发送完邮件后报错
Error in certificate: Peer's certificate issuer is not recognized.
或者是其他的(其他的一般是账号,授权码不一致的问题导致的)

如果报错:Error in certificate: Peer's certificate issuer is not recognized.

说明是证书没有配置导致的

此时需要配置证书

1.检查系统是否安装mailx,一般centos都会自带,如果没有运行yum -y install mail

[root@catchfires ~]# rpm -qa |grep mailx
mailx-12.4-10.el6_10.x86_64

2./etc/pki/nssdb 目录查看证书,没有放qq.crt的证书,解决方法如下

[root@catchfires ~]# cd /etc/pki/nssdb/
[root@catchfires nssdb]# echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ./qq.crt
[root@catchfires nssdb]# certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu"  -d ./ -i qq.crt //添加一个证书到证书数据库中
[root@catchfires nssdb]# echo "test" |mail -s test 123456@qq.com
// 如果没有certutil命令,可以运行yum install -y nss-tools

3.再次运行shell脚本,发现成功并且没有报错

4.下面开始添加网络监控系统及时报警,大致的逻辑是1分钟一次统计网络丢包情况,如果丢包> 2%时,发送邮件。

[root@catchfires ~]# cat /etc/crontab |grep moniter
 */1 * * * * root /root/moniter.sh #添加一分钟一次的网络监控程序
[root@catchfires ~]# cat /root/moniter.sh
#!/bin/bash
ping 223.5.5.5 -n -i 0.5 -q -w 50 -W 1|xargs|awk '{echo -e "\n";printf("%-10s %-15s %6s %s/%s %40s\n",strftime("%F %H:%M:%S"),$2, $18, $13, $16, $26)}' >>/tmp/moniter.log

ping1=`tail /tmp/moniter.log|grep -v " 0%"|grep -v " 1%"|grep -v " 2%"|awk '{print $4" "$3" "$2" "$1}'|tail -n1`
ping2=`tail /tmp/moniter.log|grep -v " 0%"|grep -v " 1%"|grep -v " 2%"|awk '{print $4}'|cut -f1 -d%|tail -n1`
if [ $ping2 -gt 3 ] #bash的判断相当恶心,if前后,[]前后都必须有空格
then
echo $ping1 |mail -s "$ping1" 123456qq.com
fi

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/921763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

运动耳机啥样的好用、最适合运动用的耳机推荐

在进行运动时&#xff0c;倾听音乐实际上是一种放松大脑、放松身体的小技巧。毕竟运动是一个耗费体力最多的活动&#xff0c;整个过程也往往令人感到乏味。如果有音乐作伴&#xff0c;你的运动就会变得更加轻松愉快。那么&#xff0c;哪种耳机适合运动呢&#xff1f;我正好对此…

气传导蓝牙耳机哪款好?好用的气传导耳机爆款推荐

​普通入耳式耳机戴久了容易诱发局部炎症。为了防止这些问题&#xff0c;不入耳耳机才是更好选择&#xff0c;不会滋生细菌、不会闷耳&#xff0c;那么&#xff0c;市面上都有哪些好用的气传导耳机呢&#xff1f;下面我为大伙带来最值得入手的气传导耳机&#xff0c;一起来看看…

【InsCode】InsCode打造的JavaSE与Linux命令互融的伪Linux文件系统小项目

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;啥技术都喜欢捣鼓捣鼓&#xff0c;喜欢分享技术、经验、生活。 &#x1f60e;人生感悟&#xff1a;尝尽人生百味&#xff0c;方知世间冷暖。 &#x1f4d6;所属专栏&#xff1a;Ja…

初始Netty

文章目录 目录 文章目录 前言 一、netty 总结 前言 认识netty 一、netty Netty是一个基于Java的高性能网络应用框架&#xff0c;用于快速开发可扩展的网络服务器和客户端。它提供了易于使用的抽象API&#xff0c;使开发人员能够轻松地构建各种网络应用程序&#xff0c;包括…

U盘被分成了4个盘要怎么合并

原来是做为系统盘的&#xff0c;然后有一大概小半年没用&#xff0c;今天一看它自己分成了四个盘。 并且我一插入电脑就提示我格式化 其实根本不需要任何工具&#xff0c;操作前最好把U盘数据备份一下 首先把你的U盘插在电脑上 方法一 U盘被分成四个分区的原因有以下几种可…

Spring Cloud Alibaba-实现服务调用的负载均衡

1. 什么是负载均衡 通俗的讲&#xff0c; 负载均衡就是将负载&#xff08;工作任务&#xff0c;访问请求&#xff09;进行分摊到多个操作单元&#xff08;服务器,组件&#xff09;上进行执行。 根据负载均衡发生位置的不同,一般分为服务端负载均衡和客户端负载均衡。 服务端负…

一篇文章带你学好--->Git(超详细)

Git的详解与使用&#xff0c;一篇文章带你学习好git, ,Git是当前比较流行的版本控制工具 &#xff0c;它具有分布式的功能 &#xff0c;有助于我们在团队开发中提高开发效率 注意&#xff1a;敲黑板&#xff01;&#xff01;&#xff01; 带领你去使用git 配有图文解释 超详细 …

英文论文 | 学术写作 | 避免机翻 | 科研人

因为自己之前完成了几篇英文论文&#xff0c;最近在大修一篇&#xff0c;所以对英文论文写作这块有一些感悟&#xff0c;想跟大家分享下&#xff0c;肯定会有不恰当的地方&#xff0c;也希望大家能够在评论区指出&#xff0c;共同进步&#xff5e; 1 直接写英文&#xff0c;避免…

673. 最长递增子序列的个数

673. 最长递增子序列的个数 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;方法一&#xff1a;动态规划方法二&#xff1a;贪心 前缀和 二分查找 参考代码&#xff1a;__673最长递增子序列的个数__动态规划__673最长递增子序列的个数__贪心_前缀和_二分查找…

如何在测试和预发环境下调试支付宝微信小程序的h5

微信 开发者工具调试 1、使用开发者工具打开 2、点击蜘蛛形状的小图标&#xff0c;就会出现调试页面 支付宝 真机调试 下载 1、工具下载&#xff1a;蚂蚁开发者工具&#xff08;支付宝小程序开发者工具&#xff09;&#xff1a; 蚂蚁开发者工具官方下载_蚂蚁开发者工具最…

港联证券|指数或进入磨底阶段 短期关注环保、煤炭等板块

磨底历来都不是一天能达到的&#xff0c;比方2018年的政策底到商场底&#xff0c;半途也阅历两个多月时间。当下政策底出现之后至今也有近一个月时间&#xff0c;并且下跌量能不断缩短&#xff0c;心情面也降至冰点&#xff0c;种种迹象阐明离真正商场底的构成已经不远了。此时…

【Java】树结构SQL数据的如何去实现搜索

这里写自定义目录标题 需要实现的效果前端需要的json格式&#xff1a;一定是一个完整的树结构错误错误的返回格式错误的返回格式实现的效果 正确正确的返回格式正确的展示画面 后端逻辑分析代码总览 数据库表结构 需要实现的效果 前端需要的json格式&#xff1a;一定是一个完整…

LinkedList的顶级理解

目录 1.LinkedList的介绍 LinkedList的结构 2.LinkedList的模拟实现 2.1创建双链表 2.2头插法 2.3尾插法 2.4任意位置插入 2.5查找关键字 2.6链表长度 2.7遍历链表 2.8删除第一次出现关键字为key的节点 2.9删除所有值为key的节点 2.10清空链表 2.11完整代码 3.…

PowerJob容器的使用(创建一个外置动态加载的任务)

1.使用容器的模板生成功能 2. 解压导入到IDEA中&#xff0c;下载依赖&#xff0c;添加处理器 3. 打包成jar 4. 上传项目到容器 5. 启动容器--部署jar 6. 复制一份上篇文章写的测试单机执行的任务实例&#xff0c;把执行配置修改从外置&#xff08;动态加载&#xff09; &…

scratch计算圆的面积和周长 2023年5月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析

目录 scratch计算圆的面积和周长 一、题目要求 1、准备工作 2、功能实现 二、案例分析

vue 简单实验 自定义组件 传参数 props

1.代码 <script src"https://unpkg.com/vuenext" rel"external nofollow" ></script> <div id"todo-list-app"><todo-item v-bind:todo"todo1"></todo-item> </div> <script> const ListR…

IIS短文件泄漏漏洞修改

升级netFramework至4.0以上版本 2.关闭Web服务扩展- ASP.NET&#xff08;不使用的可以关闭&#xff09; 3.CMD关闭NTFS 8.3文件格式的支持&#xff08;1代表关闭&#xff0c;0代表开启&#xff09; 不同系统关闭命令稍有区别&#xff0c;该功能默认是开启的&#xff0c;对于大多…

Rust之自动化测试(一):如何编写测试

开发环境 Windows 10Rust 1.71.1 VS Code 1.81.1 项目工程 这里继续沿用上次工程rust-demo 编写自动化测试 Edsger W. Dijkstra在他1972年的文章《谦逊的程序员》中说&#xff0c;“程序测试可以是一种非常有效的方法来显示错误的存在&#xff0c;但它对于显示它们的不存在…

用python从零开始做一个最简单的小说爬虫带GUI界面(2/3)

目录 前一章博客 前言 主函数的代码实现 逐行代码解析 获取链接 获取标题 获取网页源代码 获取各个文章的链接 函数的代码 导入库文件 获取文章的标题 获取文章的源代码 提取文章目录的各个文章的链接 总代码 下一章内容 前一章博客 用python从零开始做一个最简单…

软考高项(九)项目范围管理 ★重点集萃★

&#x1f451; 个人主页 &#x1f451; &#xff1a;&#x1f61c;&#x1f61c;&#x1f61c;Fish_Vast&#x1f61c;&#x1f61c;&#x1f61c; &#x1f41d; 个人格言 &#x1f41d; &#xff1a;&#x1f9d0;&#x1f9d0;&#x1f9d0;说到做到&#xff0c;言出必行&am…