热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux之Shell脚本自动化编程十(shell脚本编程实战以及收尾中)

首先了解一点关于密码的设置。Linux实现自动监测服务并发送邮件报警的脚本有的服务器在运行某些服务的时候可能会出现一些问题,可能会引起很严重的后果,比

 

 

首先了解一点关于密码的设置。

 

 

 

Linux实现自动监测服务并发送邮件报警的脚本

有的服务器在运行某些服务的时候可能会出现一些问题,可能会引起很严重的后果,比如用户数据丢失,所以监测服务是很有必要的,但是我们总不能一直人为地去检查那么多台服务器吧。我们有一些软件比如zabbix可以实现监控,不过我们现在学的是脚本,那么下面我们就来看一看如何用脚本自动监测服务并且发邮件报警。下面我们就以监测firewalld和iptables为例。首先如何查看服务的运行状态呢?

 

为什么iptables没有呢?因为我们少装了一个iptables-services,上一讲用的是192.168.214.129,这个主机装过了,这一讲用的是192.168.214.128。装完了以后就可以看了。

 

那么我们如何把状态提取出来呢?

 

然后的问题就是如何发邮件报警,发邮件用mail就可以了,如果mail说是not found,那么清先安装mailx(yum -y install mailx)。我们试着给我的qq邮箱发一封邮件。

 

好像没有收到啊???

 

这是因为由于我们没有修改主机名称我们的主机名是默认的localhost.localdomian。

 

这样的邮件被认为是垃圾邮件,在垃圾箱里面。

 

你可以点击移回收件箱,不过下一封还是会在垃圾箱里面,也可以选择修改一下主机名。

 

然后就不会被识别为垃圾邮件。

 

那么下面就可以来写这个脚本了。

 

然后运行一下,右下角就收到了一封邮件。

 

确实是收到了。

 

然后我们停用掉firewalld,再运行一次脚本来做测试。又收到了。

 

因为这两个都没有启用,所以是两封。

 

这是收到邮件后我们人为去查看这台服务器的毛病。当然这里还没有结束,还要和crontab结合起来,如果服务没有那么重要,我们可以每小时执行一次,如果这项服务很重要,我们就每分钟执行一次,因为每分钟crond才去检查一次有没有任务需要执行,并且格式* * * * *,最小的时间间隔也就是一分钟了。

关于上一讲远程批量部署的一些补充

因为是自动化批量部署,我们不希望有交互,因为有交互的话就得有人在服务器那里看着,那么远程ssh就有一个问题,那就是输入密码是一个交互的行为,我们如何才能避免这种交互呢?输入重定向?

 

很遗憾是不行的。那么就需要用到下面的免密登陆。参考了https://jingyan.baidu.com/album/c275f6ba08267ae33c756758.html?picindex=4

步骤如下:

 

 

 

 

 

 

 

 

 

我们来实际演练一下。

 

 

 

看到确实是不需要输密码了。

Linux系统硬件信息收集脚本

有的时候我们需要看到这样的信息,一般需要的系统信息有ip,主机名,cpu,内存,磁盘等信息。那么我们就先来看如何获取这些信息。

ip就不说了,主机名其实很简单,cpu可以查看/proc/cpuinfo,内存可以用free -m,磁盘可以用fdisk -l。

 

 

 

 

 

 

 

这里面我们要提取cpu的model name,处理器的核心数和主频。首先我们的处理器是4个但是其实我们设置的时候是两个处理器,每个处理器内核有2个,所以其实算的还是内核的数量是4,不过我们似乎习惯了直接称为处理器数是4。应该是每一个内核同时可以运行一个进程。怎么看出来是两个处理器呢?上面有一个physical id,只有0和1,那么就是两个处理器,每一个处理器都是两核,所以processor有0,1,2,3,每一个physical id有两个processor,这两个processor的core id不一样,分别是0和1,cpu cores是每一个cpu的核心数,看到都是2,cpu的主频在cpu MHz。

 

提取这些信息没有什么难的。load的三个数值以前也说过,好像是最近5分钟,10分钟,15分钟的cpu占用率。

 

对于内存,我们先不考虑交换分区,就先统计总共的内存,也就是Mem:total。至于磁盘我们用fdisk -l来看。我们只取这个/dev/sda:21.5GB这个信息。

 

那么其实提取信息这个还是比较好搞定的,如何批量提取也简单,我们搞一台服务器作为控制机,在这台控制机上在脚本里用ssh挨个把服务器列表里面的信息统计即可。这些其实都不是问题,问题是现在我想把数据导入excel里面,怎么做呢?我们可以先把数据写成csv的格式。

 

csv是以逗号分隔列的,写成csv格式以后我们用excel打开就会转成excel格式,就会得到我们想要的结果了。我下面就演示一下。

 

然后运行一下这个脚本,看一看1.csv文件。

 

有几个点提示一下。

 

这里还要纠正sed s///后面加g的作用,这个g不是从保持空间的内容复制到模式空间的意思,而是全局的意思,看下图即可,如果不加最后的g,只替换了一次。

 

那么现在1.csv有了,我们怎么看excel能不能看呢?有一种方法是把1.csv作为邮件附件发送。

 

-a选项后面就是附件。

 

不过不知道为什么,这封邮件又被放在垃圾箱里面了。

 

我们看一看这个1.csv。下载完了用excel打开的效果:

 

如果用记事本打开,就是这种效果:

 

为什么负载的数据跳了一列?这是因为24.5GB后面多了一个,我们去修改一下info.sh。最简单的办法是去掉一个逗号。

 

运行一次info.sh,然后再发一次邮件。

 

看到就对上了。这里说一下小细节,逗号一定要用英文的逗号。

 

还有一种方法是用sz,参考了https://blog.csdn.net/u014242496/article/details/52540637

 

SecureCRT也是一种和Xshell,putty类似的软件。

 

 

 

 

 

可以设置默认路径。

 

 

 

再传一次试试。

 

就没有选择文件夹的那一步了。那么我们再来看一下rz。

 

Linux实现磁盘监控报警脚本

这个功能还是有软件可以实现。

 

不过我们还是练习写脚本试一试。我们下面来用脚本实现磁盘占用(其实准确地说应该是文件分区占用)达到一定百分比的时候报发邮件报警的这么一个脚本。首先如何查看分区占用呢?用df -h。

然后我们就可以写脚本了。我们在脚本中要设置一个cv,也就是critical value(临界值),当分区利用率超过cv时,就发邮件报警,一般是85%左右,不过这里为了能够报警,我设置了一个10%。

 

运行一下脚本。就收到邮件了。

 

邮件内容也都是没问题的。那么我先来说一下这个脚本需要注意的几个点&#xff0c;第一个是我们这里逐行读取文件是用了while&#xff0c;以前用的是for&#xff0c;这里算是一个复习&#xff0c;第二个是我们这个脚本还是复习了cat <<-EOF这种输入的方式&#xff0c;-在这里是不可少的&#xff0c;当然如果你把EOF顶头了&#xff0c;那么可以不要-。这个脚本也不是多难&#xff0c;看着df -h分析一下就可以了。最后再结合crontab。


推荐阅读
  • 一、概述nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的 ... [详细]
  • 三、查看Linux版本查看系统版本信息的命令:lsb_release-a[root@localhost~]#lsb_release-aLSBVersion::co ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 手把手教你使用GraphPad Prism和Excel绘制回归分析结果的森林图
    本文介绍了使用GraphPad Prism和Excel绘制回归分析结果的森林图的方法。通过展示森林图,可以更加直观地将回归分析结果可视化。GraphPad Prism是一款专门为医学专业人士设计的绘图软件,同时也兼顾统计分析的功能,操作便捷,可以帮助科研人员轻松绘制出高质量的专业图形。文章以一篇发表在JACC杂志上的研究为例,利用其中的多因素回归分析结果来绘制森林图。通过本文的指导,读者可以学会如何使用GraphPad Prism和Excel绘制回归分析结果的森林图。 ... [详细]
  • 本文总结了使用不同方式生成 Dataframe 的方法,包括通过CSV文件、Excel文件、python dictionary、List of tuples和List of dictionary。同时介绍了一些注意事项,如使用绝对路径引入文件和安装xlrd包来读取Excel文件。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • ps:写的第一个,不足之处,欢迎拍砖---只是想用自己的方法一步步去实现一些框架看似高大上的小功能(比如说模型中的toArraytoJsonsetAtt ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • 知识图谱表示概念:知识图谱是由一些相互连接的实体和他们的属性构成的。换句话说,知识图谱是由一条条知识组成,每条知识表示为一个SPO三元组(Subject-Predicate-Obj ... [详细]
  • 用PHP连接MySQL代码的参数说明【PHP】
    后端开发|php教程PHP,连接,MySQL,参数后端开发-php教程代码是这样的:大图标网站源码,怎么在vscode中调试css,ubuntu退出命令行,系统默认开tomcat, ... [详细]
  • tomcat的log文件夹下有以下几种日志:1、catalina.YYYY-MM-DD.logcatalina引擎输出的日志;catalina是tomc ... [详细]
author-avatar
卖女孩的小方子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有