shell脚本应用(二)
防伪码:会当凌绝顶,一览众山小!
第六章 shell脚本应用(二)
前言:为了使shell脚本具有一定的“判断”能力,根据不同的条件来完成不同的管理任务。使脚本具有一定的“智能”。
目标:学会使用条件测试操作+if条件语句+实验(构建postfix邮件系统并测试系统管理和维护)
一、 条件测试操作
1、 文件测试(根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可读、可写、可执行)
-d(是否为目录)
-e(目录或文件是否存在)
-f(是否为文件)
-r(读取)-w(写入) -x(执行)
测试/media/cdrom是否存在,为0表示存在此目录,返回1不存在。
为了显示更直观,可改为以下方式
2、 整数值比较(用来判断已登录用户数量,开启进程数,磁盘使用率是否超标,以及软件版本号是否符合要求等)
设第一个数为x,第二个数为y
-eq: x = y
-ne: x ≠ y
-gt: x > y
-lt: x < y
-le: x ≤ y
-ge:x ≥ y
1)例如:判断当前已登录的用户数,当超过5个时输出“too many”
2) 判断当前可用的空闲内存大小,当低于1024m时输出具体数值。
3、 字符串比较(常用来检查用户输入,系统环境是否满足条件,以及判断用户输入的位置参数是否符合要求)
=:第一个字符串与第二个字符串相同
!=:第一个字符串与第二个字符创不相同
-z:检查字符串是否为空
1)例如:判断当前的语言环境,当发现不是en.us时输出提示信息“not en.us”
2) 交互式的简单案例
4、 逻辑测试(判断两个或者多个条件之间的依赖关系)
&&:前后两个条件都成立,测试命令返回值为0(结果成立)
||:前后两个条件之一成立,测试命令返回值为0(结果成立)
!:指定条件不成立,测试命令返回值为0(结果成立)
1) 例如:判断当前linux内核版本是否大于2.4,可以执行以下操作:
二、 使用if条件语句(更好的整理脚本结构,使得层次分明,清晰易懂)
1、 单分支的if语句(条件成立,执行相应的代码)
1) 例如:挂载光盘的操作,先判断挂载点目录是否存在,若不存在则新建此目录
Vi chkmountdir.sh,内容如下:
2) 判断当前用户是不是root,如果不是则报错并执行exit 1退出脚本(1表示退出后的返回状态值),而不再执行其他代码
Vim chkifroot.sh
执行脚本:./chkifroot.sh,因为当前登录的用户是root,所以执行fi之后的代码
2、 双分支if语句应用(嵌套使用,多次判断)
1)例如:编写一个连通性测试脚本pinghost.sh,
设置执行权限之后测试
2) 再例如:通过shell脚本检查vsftpd服务是否运行,如果已运行则列出其监听地址、pid号,否则输出提示“vsftpd服务不可用!”
首先安装vsftpd软件
然后编写脚本vim chkftpd.sh
接下来设置权限并执行,提示vsftpd服务不可用
开启vsftpd服务器之后再次执行脚本
3、 多分支if语句应用(能够根据多个互斥条件分别执行不同操作,实际上等同于嵌套使用的if语句)
例如:根据输入的考试分数的不同来区分优秀,合格,不合格三档
Vi gradediv.sh
设置权限之后执行脚本:
上机实验部分:
完成此实验必须安装postfix邮件服务器,我的服务器已经安装好,只需要配置即可。
1、使用postfix check命令检查服务器的配置,如果没有提示说明没问题。
2、 开启postfix服务
3、 修改配置文件,(/etc/postfix/main.cf)改为以下的效果。(下面的代码都有,去掉前面的#号,修改后面的值即可,
改完之后重启postfix服务,使用postfix reload重新加载。)
重启、重载
4、 安装telnet服务器和客户端(若telnet-server包装不了,先装xinetd包)
5、 配置dns服务器,在原来的基础之上修改数据文件google.com.zone即可
6、 修改vim /etc/resolv.conf
7、 使用telnet测试邮件服务器,看到下面的220说明postfix服务器没问题,可以发送邮件了。
8、 编写sysmon.sh脚本
(1)使用df命令提取出根分区的磁盘占用率,赋值给变量DUG。
(2)使用mpstat命令提取CPU使用率(需安装sysstat软件包),赋值给变量CUG。
(3)使用free命令提取出内存使用率,赋值给变量MUG。
(4)判断上述监控项目是否超标,将需要告警的信息保存到/tmp/alert.txt文件。
(5)判断/tmp/alert.txt文件是否存在,若存在则作为告警邮件发送。
9、测试sysmon.sh脚本的执行情况
(1)确认有可用的邮件服务器(如Postfix、Sendmail等),然后调低监控阈值,执行sysmon.sh脚本进行测试。
(2) 查收yangwen@google.com的邮箱,确认告警邮件内容。
10、设置crontab计划任务
确认系统服务crond已经运行。添加crontab计划任务配置,每半小时调用一次sysmon.sh脚本程序。
谢谢大家的观看!
转载于:https://blog.51cto.com/yw666/1853991
shell脚本应用(二)相关推荐
- Linux shell脚本编程(二)
Linux shell脚本编程(二) -------------------------------------------------------------------- 注:如果你对python ...
- shell脚本(二)--if流程控制语句和for循环语句的使用
理论部分: 1.在简单的脚本中各条语句按顺序执行,从而实现自动化的管理, 顺序单一执行太过机械化,不够"智能",难以实现更加灵活的系统任务. 例如:批量安装软件包 100台机器 5 ...
- linux正则表达式脚本实例,shell脚本专题二.正则表达式和文件操作
在专题一里面我们介绍了shell的基本语法和简单的案例.今天我们来稍微拔高一下,介绍shell的正则表达式和文件操作. 正则表达式 我们学习正则表达式是为了更好的操作文件.很多人看到正则表达式,甚至是 ...
- linux shell spool,Linux/Unix shell 脚本中调用SQL,RMAN脚本
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...
- linux脚本简介,Linux Shell脚本简介
Shell 诞生于 Unix,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,请先参考Unix/Linux入门教程,了解 Unix/Lunix 基础. 近几年来,Shel ...
- Linux嵌入式开发——shell脚本
文章目录 Linux嵌入式开发--shell脚本 一.shell脚本基本原则 二.shell脚本语法 2.1.编写shell脚本 2.2.交互式shell脚本 2.3.shell脚本的数值计算 2.4 ...
- shell脚本详解(一)——初学shell脚本必看哦
shell脚本详解 一.Shell脚本概述 1.1.shell脚本的概念 1.2.shell脚本应用场景 1.3.shell脚本能干什么 1.4. shell的作用--命令翻译器,"翻译官& ...
- shell脚本之购物车清单脚本
想要提升shell脚本能力,练习必不可少.真正有效的练习方法之一就是穷举法. 所谓的穷举法,就是把一个脚本练到极致. 任何脚本都讲究循序渐进,先从最简单的功能开始,逐渐增加难度.在同一个难度的级别,用 ...
- linux怎么判断网络是否正常运行,Linux shell脚本判断服务器网络是否可以上网
微信公众号:「小林coding」 用简洁的方式,分享编程小知识. Linux shell脚本判断网络畅通 介绍 在编写shell脚本时,有的功能需要确保服务器网络是可以上网才可以往下执行,那么此时就需 ...
- Linux操作系统(二:shell脚本)
练习一:编写shell脚本,计算1-100的和: 练习二:将一目录下所有的文件的扩展名改为bak 练习三:写一个脚本,统计./etc/ 目录下共有多少个目录文件 练习四:写一个脚本,依次向/etc/p ...
最新文章
- 看了 100多份简历后,想给找工作的程序员几点建议
- Linux下静态编译的一个TIP
- 在 N 条水平线与 M 条竖直线构成的网格中,放 K 枚石子
- Device eth0 does not seem to be present, delaying initialization.转载
- 聊一聊双十一背后的技术 - 不一样的秒杀技术, 裸秒
- 11.4 专利法与反不正当竞争法解读
- java货物进销管理系统_java实验 货物进销管理系统
- Dynamic动态类型
- CUDA2.1-原理之索引与warp
- spring web.xml配置服务启动后执行文件
- Linux下编译环境及Makefile的学习笔记
- phpspider 爬取汉谜网
- 思维导图 进阶(01)关键词提取,思维导图的灵魂
- 计算机主机三维模型,三维模型
- 谷歌邮箱无法显示使用 Base64 处理的图片的解决方法
- 【10.24】一个只属于程序员的节日
- 序列化-Kryo的使用详解
- Java面试题全集(上)-基础知识
- 数学之美读书笔记--摘抄
- 什么是数据科学?数据科学的基本内容
热门文章
- 五行代码快速使用python的turtle库绘画
- ansible使用教程(4W字长文,保姆级别教程,建议收藏)
- Flutter+百度人工智能实现测验值app
- 手机python3_python3 简单手机验证码的实现
- python语言流程控制语句的格式_Python流程控制语句的深入讲解
- html 自定义字段,HTML 标签自定义属性的问题
- 11.24杭州沙龙预告:数据化经营,智能化决策
- 201671030128+词频统计软件项目报告
- 教你如何将自己的脚本代码放到服务器上运行
- 《社会智能与综合集成系统》第1章1.节参考文献