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

Shell脚本中的条件判断与实践案例

本文提供了几个实用的Shell脚本案例,包括监控磁盘空间、检测Web服务状态以及使用Curl进行服务可用性测试。每个案例都详细介绍了脚本的编写方法和运行效果。

实践案例


    • 1. 监控磁盘剩余空间,当低于20GB时发送警报邮件给管理员,并设置每日检查。
    • 2. 检查Web服务是否运行(通过进程或端口),若未运行则启动服务并配置防火墙。
    • 3. 使用Curl命令测试Web服务的可访问性,成功时返回确认信息,失败时返回特定的状态码。
    • 4. 涉及的技术点




1. 监控磁盘剩余空间

#!/bin/bash
# 脚本名称: disk_monitor.sh
# 版本: v1.0
# 创建者邮箱: admin@test.com
# 创建时间: 2023-01-01 06:13:06
# 描述: 监控根目录剩余空间,低于20GB时发送邮件通知管理员
free_space=$(df -h | grep /$ | awk '{print $4}' | cut -d 'G' -f 1)
if [ $free_space -lt 20 ]; then
echo "Disk space is below 20GB" | mail -s "Disk Space Warning" admin@test.com
else
echo "Free disk space: ${free_space}G"
fi

运行结果示例:



[root@localhost scripts]# bash disk_monitor.sh
[root@localhost scripts]# mail
Heirloom Mail version 12.5 7/5/10. Type ? for help.
"/var/spool/mail/root": 46 messages 1 new 43 unread
U 45 root Mon Jan 2 06:21 19/641 "Disk Space Warning"
N 46 root Mon Jan 2 22:30 18/631 "Disk Space Warning"



2. 检查Web服务状态

#!/bin/bash
# 脚本名称: web_service_check.sh
# 版本: v1.0
# 创建者邮箱: admin@test.com
# 创建时间: 2023-01-02 05:35:32
# 描述: 检查Web服务是否运行,如未运行则启动并配置防火墙
process_count=$(ps -ef | grep httpd | grep -v grep | wc -l)
# Alternatively, use netstat to check port 80
# process_count=$(netstat -lnupt | grep :80 | wc -l)
if [ $process_count -ne 0 ]; then
echo "HTTPD service is running."
else
echo "Starting HTTPD service..."
systemctl restart firewalld
firewall-cmd --add-port=80/tcp
systemctl start httpd
fi

Web服务正在运行:



[root@localhost scripts]# bash web_service_check.sh
HTTPD service is running.


Web服务未运行:



[root@localhost scripts]# bash web_service_check.sh
Starting HTTPD service...
Success
[root@localhost scripts]# firewall-cmd --list-ports
80/tcp



3. 使用Curl测试Web服务

#!/bin/bash
# 脚本名称: web_test.sh
# 版本: v1.0
# 创建者邮箱: admin@test.com
# 创建时间: 2023-01-02 05:54:59
# 描述: 使用Curl命令测试Web服务是否正常运行
curl -s http://192.168.6.20 > /dev/null
if [ $? -eq 0 ]; then
echo "Web server is running."
else
echo "Web server is not accessible."
exit 12
fi

服务正常访问:



[root@localhost scripts]# bash web_test.sh
Web server is running.


服务无法访问:



[root@localhost scripts]# bash web_test.sh
Web server is not accessible.
[root@localhost scripts]# echo $?
12



4. 技术点


  1. 修改系统时区

编辑系统环境变量文件



[root@localhost scripts]# vim /etc/profile


在文件末尾添加如下内容:



TZ='Asia/Shanghai'
export TZ


重新加载配置文件以应用更改:



[root@localhost scripts]# source /etc/profile


查看当前时区设置:



[root@localhost scripts]# date
Tue Jan 3 14:36:48 CST 2023


手动调整系统时间:



[root@localhost scripts]# date -s "2023-01-02 22:39:10"
[root@localhost scripts]# hwclock -w # 将系统时间写入硬件时钟



推荐阅读
  • 本文探讨了如何使用ls -lsh命令排除总大小输出,仅显示文件大小的方法,并提供了几种实现这一目标的解决方案。 ... [详细]
  • 实体映射最强工具类:MapStruct真香 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • 本文探讨了如何在Node.js环境中,通过Tor网络使用的SOCKS5代理执行HTTP请求。文中不仅提供了基础的实现方法,还介绍了几种常用的库和工具,帮助开发者解决遇到的问题。 ... [详细]
  • Zabbix配置磁盘性能监控
    本文介绍了如何通过Zabbix监控系统中的磁盘性能,包括读写操作次数、活跃I/O时间等关键指标的设置与测试。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 毕业设计:基于机器学习与深度学习的垃圾邮件(短信)分类算法实现
    本文详细介绍了如何使用机器学习和深度学习技术对垃圾邮件和短信进行分类。内容涵盖从数据集介绍、预处理、特征提取到模型训练与评估的完整流程,并提供了具体的代码示例和实验结果。 ... [详细]
  • 本文详细探讨了 Django 的 ORM(对象关系映射)机制,重点介绍了其如何通过 Python 元类技术实现数据库表与 Python 类的映射。此外,文章还分析了 Django 中各种字段类型的继承结构及其与数据库数据类型的对应关系。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 在网站制作中随时可用的10个 HTML5 代码片段
    HTML很容易写,但创建网页时,您经常需要重复做同样的任务,如创建表单。在这篇文章中,我收集了10个超有用的HTML代码片段,有HTML5启动模板、空白图片、打电话和发短信、自动完 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 本文介绍在 Red Hat Linux 系统中如何安全地永久修改网卡的MAC地址。如果直接修改配置文件中的HWADDR字段,可能会导致系统启动时出现错误。了解ifup脚本的工作机制有助于避免这些问题。 ... [详细]
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社区 版权所有