设为首页 收藏本站
查看: 1546|回复: 0

shell脚本应用(二)

[复制链接]

尚未签到

发表于 2018-8-21 11:03:52 | 显示全部楼层 |阅读模式
  防伪码:会当凌绝顶,一览众山小!
  第六章 shell脚本应用(二)
  前言:为了使shell脚本具有一定的“判断”能力,根据不同的条件来完成不同的管理任务。使脚本具有一定的“智能”。
  目标:学会使用条件测试操作+if条件语句+实验(构建postfix邮件系统并测试系统管理和维护)
  一、 条件测试操作
  1、 文件测试(根据给定的路径名称,判断对应的是文件还是目录,或者判断文件是否可读、可写、可执行)
  -d(是否为目录)
  -e(目录或文件是否存在)
  -f(是否为文件)
  -r(读取)-w(写入) -x(执行)
  测试/media/cdrom是否存在,为0表示存在此目录,返回1不存在。
DSC0000.png

  为了显示更直观,可改为以下方式
DSC0001.png

  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”
DSC0002.png

  2) 判断当前可用的空闲内存大小,当低于1024m时输出具体数值。
DSC0003.png

  3、 字符串比较(常用来检查用户输入,系统环境是否满足条件,以及判断用户输入的位置参数是否符合要求)
  =:第一个字符串与第二个字符串相同
  !=:第一个字符串与第二个字符创不相同
  -z:检查字符串是否为空
  1)例如:判断当前的语言环境,当发现不是en.us时输出提示信息“not  en.us”
DSC0004.png

  2) 交互式的简单案例
DSC0005.png

  4、 逻辑测试(判断两个或者多个条件之间的依赖关系)
  &&:前后两个条件都成立,测试命令返回值为0(结果成立)
  ||:前后两个条件之一成立,测试命令返回值为0(结果成立)
  !:指定条件不成立,测试命令返回值为0(结果成立)
  1) 例如:判断当前linux内核版本是否大于2.4,可以执行以下操作:
DSC0006.png

  二、 使用if条件语句(更好的整理脚本结构,使得层次分明,清晰易懂)
  1、 单分支的if语句(条件成立,执行相应的代码)
DSC0007.png

  1) 例如:挂载光盘的操作,先判断挂载点目录是否存在,若不存在则新建此目录
  Vi  chkmountdir.sh,内容如下:
DSC0008.png

DSC0009.png

  2) 判断当前用户是不是root,如果不是则报错并执行exit 1退出脚本(1表示退出后的返回状态值),而不再执行其他代码
  Vim  chkifroot.sh
DSC00010.png

  执行脚本:./chkifroot.sh,因为当前登录的用户是root,所以执行fi之后的代码
DSC00011.png

  2、 双分支if语句应用(嵌套使用,多次判断)
DSC00012.png

  1)例如:编写一个连通性测试脚本pinghost.sh,
DSC00013.png

  设置执行权限之后测试
DSC00014.png

  2) 再例如:通过shell脚本检查vsftpd服务是否运行,如果已运行则列出其监听地址、pid号,否则输出提示“vsftpd服务不可用!”
  首先安装vsftpd软件
DSC00015.png

  然后编写脚本vim  chkftpd.sh
DSC00016.png

  接下来设置权限并执行,提示vsftpd服务不可用
DSC00017.png

  开启vsftpd服务器之后再次执行脚本
DSC00018.png

  3、 多分支if语句应用(能够根据多个互斥条件分别执行不同操作,实际上等同于嵌套使用的if语句)
DSC00019.png

  例如:根据输入的考试分数的不同来区分优秀,合格,不合格三档
  Vi  gradediv.sh
DSC00020.png

  设置权限之后执行脚本:
DSC00021.png

  上机实验部分:
  完成此实验必须安装postfix邮件服务器,我的服务器已经安装好,只需要配置即可。
  1、使用postfix   check命令检查服务器的配置,如果没有提示说明没问题。
DSC00022.png

  2、 开启postfix服务
DSC00023.png

  3、 修改配置文件,(/etc/postfix/main.cf)改为以下的效果。(下面的代码都有,去掉前面的#号,修改后面的值即可,

  改完之后重启postfix服务,使用postfix>
DSC00024.jpg

DSC00025.jpg

DSC00026.jpg

DSC00027.jpg

DSC00028.jpg

DSC00029.jpg

DSC00030.jpg

  重启、重载
DSC00031.png

  4、 安装telnet服务器和客户端(若telnet-server包装不了,先装xinetd包)
DSC00032.png

  5、 配置dns服务器,在原来的基础之上修改数据文件google.com.zone即可
DSC00033.png

DSC00034.jpg

  6、 修改vim  /etc/resolv.conf
DSC00035.png

  7、 使用telnet测试邮件服务器,看到下面的220说明postfix服务器没问题,可以发送邮件了。
DSC00036.png

  8、 编写sysmon.sh脚本
  (1)使用df命令提取出根分区的磁盘占用率,赋值给变量DUG。
  (2)使用mpstat命令提取CPU使用率(需安装sysstat软件包),赋值给变量CUG。
  (3)使用free命令提取出内存使用率,赋值给变量MUG。
  (4)判断上述监控项目是否超标,将需要告警的信息保存到/tmp/alert.txt文件。
  (5)判断/tmp/alert.txt文件是否存在,若存在则作为告警邮件发送。
DSC00037.png

DSC00038.jpg

  9、测试sysmon.sh脚本的执行情况
  (1)确认有可用的邮件服务器(如Postfix、Sendmail等),然后调低监控阈值,执行sysmon.sh脚本进行测试。
DSC00039.png

  (2) 查收yangwen@google.com的邮箱,确认告警邮件内容。
DSC00040.jpg

  10、设置crontab计划任务
  确认系统服务crond已经运行。添加crontab计划任务配置,每半小时调用一次sysmon.sh脚本程序。
DSC00041.png

  谢谢大家的观看!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-554629-1-1.html 上篇帖子: shell从入门到放弃(上) 下篇帖子: shell--1、第一个shell脚本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表