linux下使用Mail命令发送邮件的配置、快速实现以及sed命令的一些补充:行结合模式匹配取内容及sed命令显示配置文件中的有效内容

news2024/11/24 8:54:58

一、linux下使用Mail命令发送邮件的配置及快速实现

之前在服务器上增加了一些日志统计shell脚本并且每周进行一次日志分析统计自动在周一早上发到我的邮箱,最近服务器进行了迁移收缩,又得做点重复的事情,首先是让服务器支持邮件发送。

1:yum快速安装mail服务

[dev@B73 ~]$ sudo mail
-bash: mail: command not found
[dev@B73 ~]$ sudo yum install -y mainx
Loaded plugins: fastestmirror, security
Setting up Install Process
....
Complete!
#mail的使用
[dev@B73 ~]$ mail -help
Send options without primary recipient specified.
Usage: mail -eiIUdEFntBDNHRV~ -T FILE -u USER -h hops -r address -s SUBJECT -a FILE -q FILE -f FILE -A ACCOUNT -b USERS -c USERS -S OPTION users

-b<地址>:指定密件副本的收信人地址;
-c<地址>:指定副本的收信人地址;
-f<邮件文件>:读取指定邮件文件中的邮件;
-i:不显示终端发出的信息;
-I:使用互动模式;
-n:程序使用时,不使用mail.rc文件中的设置;
-N:阅读邮件时,不显示邮件的标题;
-s<邮件主题>:指定邮件的主题;
-u<用户帐号>:读取指定用户的邮件;
-v:执行时,显示详细的信息。

2:配置mail文件,在最后添加smtp的账号密码

[dev@B73 ~]$ sudo vim /etc/mail.rc
# For Linux and BSD, this should be set.
set bsdcompat
set from=hello@04007.cn
set smtp=mail.04007.cn
set smtp-auth-user=hello@04007.cn
set smtp-auth-password=password..
set smtp-auth=login

3,mail用法:完成以上两步即可以在mail中发送邮件:

[dev@B73 ~]$ echo "this is a test mail." | mail -s "test_mail" hello@007.cn 

mail可以有很多用法,比如可以方便地发送复杂的html内容,同时秒送给多人,发送带附件邮件,使用文件进行邮件发送等等,用法如下:

#shell脚本中使用mail发送复杂的html内容:
echo $charall | mail -s "$(echo -e "标题\nContent-Type: text/html; charset=utf-8")" hello@007.cn
#邮件同时发送给多人的用法
echo $charall | mail -s "$(echo -e "标题\nContent-Type: text/html; charset=utf-8")" -c hello@007.cn test@007.cn 
#带附件的用法:
mail -s "this is a test mail"  hello@007.cn  -a  /log/logstat.log
#使用文件进行邮件发送
mail -s "this is a test mail" hello@007.cn  < mail.txt

二、sed命令的一些补充:行结合模式匹配取内容及sed命令显示配置文件中的有效内容

    之前有一篇文章对linux下的sed命令有一些了解, linux文本分析利器sed命令的使用详细举例[行操作,模式匹配,替换,引用,后向引用]_sed 后向引用-CSDN博客,另有一篇文章:Linux下的sed命令详解、awk模糊匹配统计行数命令详解 以及 tar压缩多个绝对路径文件时如何去掉绝对路径-CSDN博客 对sed命令进行了详细的测试使用,但还是觉得对sed记忆不够深刻,但sed,awk,grep是文本操作的三大利器,有空的时候觉得有必要多进行了一些尝试使用了解。

1,sed结合按行和模式匹配来取内容

        在使用sed进行取内容时,除了可以使用按行、模式匹配、模式范围匹配外,sed还支持结合按行和模式匹配来取内容。如下可以使用从第三行开始查找,一直查找到的匹配890的行的内容进行显示。不过注意这里是查找到第一个出现890内容的这一行即停止。

[root@007 shell]# nl s.txt  
     1  what is you name, yes?aaz123
     2  bettertest, dont konw this char
     3  jiujiu
     4  333,123,or hello 789
     5  --hello--
       
     6  1234567890
     7  hellowolrd, some times this is good;
     8  thisiswhat,haha,shat!
     9  toutiao333.
[root@007 shell]# cat -n s.txt | sed -n '3,/890/p'
     3  jiujiu
     4  333,123,or hello 789
     5  --hello--
     6
     7  1234567890
 #如下是修改s.txt内容,以便查看sed模式匹配是查找到第一个匹配的行
 [root@007 shell]# cat -n s.txt 
     1  what is you name, yes?aaz123
     2  bettertest, dont konw this char
     3  jiujiu
     4  333,123,or hello 789
     5  --hello--
     6
     7  1234567890
     8  hellowolrd, some times this is good;
     9  thisiswhat,haha,shat!
    10  toutiao333.
    11  yes,the end is 1234567890.
[root@007 shell]# cat -n s.txt | sed -n '3,/890/p'
     3  jiujiu
     4  333,123,or hello 789
     5  --hello--
     6
     7  1234567890

    不过写到这里,突然想那如果我真要实现sed查看到最后一次模式的行内容怎么实现呢?想了一想,办法肯定是有的,不过加了个tac命令,当然除了使用tac外,使用head,tail之类的都可以,好像只使用sed不是很好实现。我这里就使用tac操作一下:

[root@007 shell]# sed -n '3,$p' s.txt | tac | sed -n '/890/,$p' | tac
jiujiu
333,123,or hello 789
--hello--

1234567890
hellowolrd, some times this is good;
thisiswhat,haha,shat!
toutiao333.
yes,the end is 1234567890.

2, 多命令执行的-e选项、分号及多行模式

    上面这里列的是在取内容上比之前两篇文章不同的地方,对于sed命令,之前文章也有记录一些比如使用&引用,使用\1后向引用等高级的用法,也有记录常用的显示命令p,行后增加命令a,行前插入命令i,替换本行命令c,以及删除行d,替换命令s,只显示行号命令=,读取和写入文件命令rw等。保存一张图:

8d133974ac87f297bdb8469afc07b32d.png

    看一下这个-e选项, -e可以让sed命令支持多个操作同时进行,比如如下即能显示匹配890的行,同时也能进行内容替换。

[root@007 shell]# sed -n -e '/890/p' -e '/333/s/333/===/gp' s.txt   
===,123,or hello 789
1234567890
toutiao===.
yes,the end is 1234567890.

    -e选项的功能并不仅仅有此一个办实现,在sed命令里可以使用分号进行多命令执行,也可以使用换行或者使用-f加载文件来执行多命令,比如下面可以使用;分开两个命令,一个是打印行号,一个是打印内容。同时也可以使用分行来实现。如下:

[root@007 shell]# sed -n '/890/=; /890/p' s.txt 
7
1234567890
11
yes,the end is 1234567890.
#使用多行模式
[root@007 shell]# sed -n '
> /890/=
> /890/p
> ' s.txt
7
1234567890
11
yes,the end is 1234567890.

    再记一个常用的例子,就是在查看配置文件的时候,通常我们只需要显示配置文件中的有效内容,即要删除空行和注释行,当然可以使用grep等其它命令来实现,这里考虑一下使用sed命令来实现显示配置文件中的有效内容:

#当然可以使用管道进行两次内容匹配,不过这里是不能使用-e的。
[root@007 redis-3.2.1]# sed  -n '/^#/!p' redis.conf | sed -n '/^$/!p'
#也有更好的办法,想了想试出了下面的这个命令,使用-r来使用扩展正则表达式,这个命令是不是很精简。
[root@007 redis-3.2.1]# sed  -n -r '/(^#|^$)/!p' redis.conf
#使用grep也很方便
[root@007 redis-3.2.1]#grep -vE "^$|^#" redis.conf

    最后回到上面提到的一个问题,如果只想使用sed查看从某行到最后一次模式匹配的行内容,有没有办法实现?实际也是有的,需要结合sed里的一些内存缓冲区的命令Gh,使用G将一行追加到模式空间(G),追加结束后使用h命令拷贝模板式空间的内容到内存中的缓冲区,最后执行(备注命令执行最后会输出一行空行,原因是保留空间默认为空),命令如下:

[root@007 shell]# sed -n '{4,$G;h;$p}' s.txt | sed -n '/890/,$p' | sed -n '{G;h;$p}'   
jiujiu
333,123,or hello 789
--hello--

1234567890
hellowolrd, some times this is good;
thisiswhat,haha,shat!
toutiao333.
yes,the end is 1234567890.

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

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

相关文章

Java语言程序设计基础篇_编程练习题*18.19 (思瑞平斯基三角形)

题目&#xff1a;*18.19 (思瑞平斯基三角形) 修改程序清单18-9, 开发一个程序让用户使用 “” 和 "-” 按钮将当前阶数增1或减1&#xff0c;如图 18 -12a 所示。初始阶数为0。如果当前阶数为0&#xff0c;就忽略按钮。 代码示例 编程练习题18_19SierpinskiTriangle.java…

WEBSERVICE报错逻辑端口不存在问题

例如如下的报错 打开你的SOA 修改这个位置的代码

JavaScript ES6特性(var let const、function=>、增强表达赋值、类与对象)

一、var let const 1、var var明明定义在for里面的但是外部能够访问这个变量,说明var可以跨域访问。 2、let let明明定义在for里面的但是外部不能够访问这个变量,说明let不可以跨域访问。 3、const const foo = {}; // 为 foo 添加一个属性,可以成功 foo.prop = 123; fo…

【mechine learning-六-supervise learning之线性回归模型】

监督学习之线性回归模型 线性回归模型线性模型回归模型 如何使用线性模型实现智能化预测呢寻找数据训练模型输入、特征、目标、预测值、模型代价函数 线性模型是人工智能监督学习中最广泛的应用&#xff0c;所以有必要先学习一下这个基础模型&#xff0c;做好基石。 线性回归模…

商业体育馆的未来之选:气膜馆引领新赛道—轻空间

随着城市化进程的加快&#xff0c;土地资源日益紧张&#xff0c;商业体育馆的建设需求也日渐增多。传统建筑在用地、成本、周期等方面存在诸多限制&#xff0c;而气膜馆的出现&#xff0c;为体育场馆建设提供了一条全新的解决方案。在未来十年&#xff0c;气膜体育馆将成为商业…

【系统方案】ERP管理系统总体建设方案(Word)

第一部分 概述 第二部分 方案介绍 第三部分 系统业务流程 3.1 关键需求概括分析 3.1.1 销售管理方面 3.1.2 采购管理方面 3.1.3 仓库管理方面 3.1.4 财务管理方面 3.1.5 人力资源方面 3.2 关键需求具体分析 3.2.1 财务管理 3.2.1.1会计凭证解决 3.2.1.2钞票流量预算管理 3.2.1.…

C语言15--联合体与枚举

联合体&#xff08;共同体&#xff09;基本概念 联合体的外在形式跟结构体非常类似&#xff0c;但它们有一个本质的区别&#xff1a;结构体中的各个成员是各自独立的内存空间&#xff0c;而联合体中的各个成员却共用同一块内存&#xff0c;因此联合体也称为共用体。 联合体各成…

[苍穹外卖]-09Spring Task定时任务

Spring Task spring Task是spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑 只要是需要定时处理的场景都可以使用Spring Task定时任务框架 cron表达式就是一个字符串,可以定义任务触发的时间 构成规则: 分为6或7个域, 由空格隔开,每个域代表一个含义每…

即插即用篇 | YOLOv8 引入并行的分块注意力 | 北京大学 2024 | 微小目标

本改进已同步到YOLO-Magic框架! 摘要:红外小目标检测是一项重要的计算机视觉任务,涉及在红外图像中识别和定位通常仅包含少量像素的微小目标。然而,由于目标体积小且红外图像背景通常复杂,这一任务面临诸多挑战。本文提出了一种深度学习方法,HCF-Net,通过多个实用模块显…

客厅适合用什么灯?客厅落地台灯款式分享

客厅适合用什么灯&#xff1f;客厅落地台灯具备着提供舒适、宽广光线的作用&#xff0c;非常受广大学生、家长们的欢迎。然而&#xff0c;市面上有些品质低劣的产品不仅难以达到预期的照明效果&#xff0c;更有可能导致眼睛受到二次伤害&#xff0c;甚至潜藏安全隐患。作为一名…

云端与 IDE 智能体整合:解决工具碎片化,实现 AI 全流程自动编码

在那篇《2024 年 AI 辅助研发趋势》里&#xff0c;我们谈及了未来的趋势是&#xff1a;从辅助开发人员发展到涵盖软件开发的 整个生命周期。而软件研发本身也是一个复杂的流程&#xff0c;涉及到需求分析、设计、开发、测试、部署等等。在开源的《AI 辅助软件工程&#xff1a;实…

SpringCloud Alibaba入门简介

1、诞生 2018.10.31&#xff0c;Spring Cloud Alibaba 正式入驻了 Spring Cloud 官方孵化器&#xff0c;并在 Maven 中央库发布了第一个版本。 2、是什么&#xff0c;去哪下 官网&#xff1a;Spring Cloud Alibaba官网_基于Springboot的微服务教程-阿里云-阿里云Spring Cloud …

蓄电池制造5G智能工厂物联数字孪生平台,推进制造业数字化转型

蓄电池制造5G智能工厂物联数字孪生平台&#xff0c;推进制造业数字化转型。5G智能工厂&#xff0c;作为“5G工业互联网”深度融合的产物&#xff0c;将5G技术广泛应用于工厂生产现场&#xff0c;实现了生产单元的广泛连接、IT与OT的深度融合以及数据要素的充分利用。随着5G技术…

健身房|基于springboot的健身房管理系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理…

【ROS2】地平线RDK X3Pi系统由1.x升级到3.0.0

1、硬件说明 1.1 硬件版本 截止2024.9.11,地平线RDK X3的硬件有四个版本:V1.0、V1.1、V1.2和V2.1 1.2 外观区别 1)V1.x版本外观 2)V2.X版本外观 1.3 配置区别 RDK X3 2.0 主要特性包括四核 Cortex A53 处理器、5Tops BPU 算力、最高 4GB 内存、支持 4K@60 帧视频编…

腾讯混元首个多模态模型——hunyuan-vision

腾讯混元系列升级&#xff1a; 腾讯混元发布多模态模型hunyuan-vision&#xff0c;具有4K的上下文&#xff0c;成本为18元/百万tokens。 感谢您的阅读&#xff0c;在智匠AI&#xff08;MindCraft AI&#xff09;上体验最新更新的模型。

人工智能+数字孪生技术在智慧型项目中的应用研究(Word原件)

1 基于BIM的智慧社区运维管理信息系统构建 1.1 数据存储 1.2 数据交换 1.3 BIM模型的数据整合及轻量化 1.运维BIM模型 2.BIM模型的数据整合 3.BIM模型的轻量化处理 2 GIS与BIM融合数字孪生技术应用 2.1 BIM模型在实景三维GIS平台上分析 2.2 BIM与GIS数据交互 …

【C++登堂入室】类与对象(上)

目录 一、面向过程和面向对象初步认识 二、类的引入 三、类的定义 四、类的访问限定符及封装 4.1 访问限定符 4.2 封装 五、类的作用域 六、类的实例化 七、类对象模型 7.1如何计算类对象的大小 7.2 类对象的存储方式猜测 7.3 结构体内存对齐规则 八、this指针 …

git:恢复纯版本库

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

WebGL系列教程五(使用索引绘制彩色立方体)

目录 1 前言2 立方体3 开始绘制3.1 声明顶点和颜色3.2 使用索引绘制3.3 效果3.4 完整代码 4 总结 1 前言 上一讲我们讲了如何绘制彩色的三角形&#xff0c;这一讲我们来说如何绘制立方体。为什么几乎所有的WebGL教程总是从开始绘制三角形开始&#xff0c;因为三角形是最小的面&…