当前位置: 首页 > news >正文

Shell第一次作业

要求:

1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。

​2、判断web服务是否运行(1、查看进程的方式判断该程序是否运行,2、通过查看端口的方式判断该程序是否运行,如果没有运行,则启动该服务并配置防火墙规则。​

3、使用curl命令访问第二题的web服务,看能否正常访问,如果能正常访问,则返回web server is running;如果不能正常访问,返回12状态码。

1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查一次磁盘剩余空间。*
1.需要的服务sendmail和mailx
2.用到的命令df

df常用参数含义
-h使用易读方式输出 Filesystem Size Used Avail Use% Mounted on
-H以1000为单位而不是1024
-k以KB为单位 Filesystem 1K-blocks Used Available Use% Mounted on
-m以MB为单位 Filesystem 1M-blocks Used Available Use% Mounted on

3.awk ‘NR=行’{print $列}'表示逮你第几行第几列的内容

4.mail -s 邮件标题 收件人

5.例行性任务crontab

6.具体命令如下:

[root@redhat9 shellwenjian]# vim ade.sh
#!/bin/bash
mb=`df -m / | awk 'NR==2{print $4}'`
gb=$[mb/1024]
if [ "$gb" -lt 20 ]
thenecho "您最近的磁盘空间已经小于20G,请及时查看!" |  mail -s "WORNING!" root@localhost
fi
[root@redhat9 shellwenjian]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root# For details see man 4 crontabs# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
0 0 * * * root /shellwenjian/ade.sh

​2、判断web服务是否运行(1、查看进程的方式判断该程序是否运行,2、通过查看端口的方式判断该程序是否运行),如果没有运行,则启动该服务并配置防火墙规则。
1.先判断是否下载http服务和firewall没有就安装,rpm -qa,yum install

2.为httpd设置防火墙策略

3.通过进程和端口两种方式同时满足才能判断http运行正常,用到&&

4.再通过统计进程和端口信息条数来判断是否开启,wc -l

5.具体命令如下:

#!/bin/bash
rpm_http=`rpm -qa httpd |wc -l`
if [ $rpm_http -ge 1 ]
thensystemctl start httpd;
elseyum install -y httpd;systemctl start httpd;
fi
rpm_firewall=`rpm -qa firewalld |wc -l`
if [ $rpm_firewall -ge 1 ]
thensystemctl start firewalld;firewall-cmd --add-service=http --permanent;
elseyum install -y firewalld;systemctl start firewalld;firewall-cmd --add-service=http --permanent;
fi
ps_ef=`ps -ef | grep "httpd" | wc -l`
port_web=`ss -lntup | grep -w "80" |  wc -l`
if [ $ps_ef -ge 2 ] && [ $port_web -ge 2 ]
thenecho "web服务已运行!"
elseecho "稍后为您开启web服务!"systemctl start httpd;
fi
##
#ps_ef=`ps -ef | grep "httpd" | grep -v grep  | wc -l`
#port_web=`ss -lntup | grep -w "80" | grep -v grep | wc -l`
#if [ $ps_ef -ge 1 ] && [ $port_web -ge 1 ]
#then
#        echo "web服务已运行!"
#else
#        echo "稍后为您开启web服务!"
#        systemctl start httpd;
#fi

3、使用curl命令访问第二题的web服务,看能否正常访问,如果能正常访问,则返回web server is running;如果不能正常访问,返回12状态码。
1.将错误输出输出到/dev/null

具体命令如下:

#!bin/bash
curl 192.168.2.135 > /dev/null 2>&1
if [ $? -eq 0 ]
thenecho "web server is running!"
elseexit 12
fi

2.测试结果:

[root@redhat9 shellwenjian]# bash curl.sh
web server is running!
[root@redhat9 shellwenjian]# systemctl stop httpd.service
[root@redhat9 shellwenjian]# bash curl.sh
[root@redhat9 shellwenjian]# echo $?
12
http://www.lryc.cn/news/63863.html

相关文章:

  • 实例解读nn.AdaptiveAvgPool2d((1, 1))
  • 泛型编程 之模板(template)
  • 用ChatGPT问DotNet的相关问题,发现DotNet工程师的前景还不错
  • LeetCode_字符串_简单_415.字符串相加
  • Insix:面向真实的生成数据增强,用于Nuclei实例分割
  • CleanMyMac X4.13.2最新版下载
  • 机器学习算法原理:详细介绍各种机器学习算法的原理、优缺点和适用场景
  • Spring Security 6.0系列【32】授权服务器篇之默认过滤器
  • .NET中比肩System.Text.Json序列化反序列化组件MessagePack
  • Oracle删除列操作:逻辑删除和物理删除
  • 找出字符串中第一个匹配项的下标、求解方程----2023/5/2
  • 23:宁以non-member、non-friend替换member函数
  • Centos7安装Redis
  • Android 项目必备(四十五)-->2023 年如何构建 Android 应用程序
  • 改进YOLOv5: | 涨点神器 | 即插即用| ICLR 2022!Intel提出ODConv:即插即用的动态卷积
  • ( 数组和矩阵) 485. 最大连续 1 的个数 ——【Leetcode每日一题】
  • 从0搭建Vue3组件库(十一): 集成项目的编程规范工具链(ESlint+Prettier+Stylelint)
  • Mysql 苞米豆 多数据源 读写分离(小项目可用)
  • OJ练习第90题——删除字符使频率相同
  • 云原生Istio基本介绍
  • Vue(简单了解Cookie、生命周期)
  • 57.网页设计图标实战
  • 浅析AI视频智能检测技术在城市管理中的场景应用
  • unity中的Line Renderer
  • 【数据架构系列-06】一文搞懂数据模型的3中类型——概念模型、逻辑模型、物理模型
  • Java——Java面向对象
  • MyBatis:生命周期、作用域、结果集映射 ResultMap、日志、分页、使用注解开发、Lombok
  • PostgreSQL安装和开启SSL加密连接【配置双向认证】
  • 【ShenYu系列】ShenYu Dubbo插件全流程源码解析
  • spring解决循环依赖的三级缓存