Linux Shell 脚本题目集

news2025/4/12 20:12:41

1、执行 ping 命令对指定主机进行测试,以确定该主机是否处于存活状态并输出相应结果。

#!/bin/bash

read -p "请输入主机号:" pc      # 读取用户输入的主机号

if [ -z "$pc" ];then             # 检查用户输入是否为空
  echo "主机号不能为空!"
  exit 1
fi

# ping命令检查主机是否存活(发送三个ICMP请求,超时时间为3秒)
ping -c 3 -w 3 "$pc" > /dev/null

# 检查ping命令的返回值
if [ $? -eq 0 ];then 
  echo "$pc 存活"
else
  echo "$pc 不存在或不在存活状态"
fi

测试示例:

2、验证系统中特定用户是否存在。

#!/bin/bash

read -p "请输入用户名或者用户ID号:" username  # 读取用户输入的用户名或用户ID号

if [ -z $username ];then                     # 判断输入用户名或用户ID号是否为空
  echo "请输入用户名或用户ID号!"
  exit 1
fi

id $username > /dev/null 2>&1      # 检查用户是否存在

if [ $? -eq 0 ]                    # 检查id命令返回值
  then 
  echo "$username用户 存在"
else
  echo "$username用户 不存在"
fi

测试示例:

3、检查当前内核的主版本是否为 3 且次版本是否大于 10,并输出相应判断结果。

#!/bin/bash

zhu=$(uname -r | cut -d '.' -f1)   # 内核主版本
ci=$(uname -r | cut -d '.'  -f2)   # 内核次版本


if [ "$zhu" -eq 3 ]  # 检查主版本号是否为3
  then
  echo "主版本号为:3"
else
  echo "主版本号为:$zhu,不为3"
fi

if [ "$ci" -gt 10 ]  # 检查次版本号是否大于10
  then
  echo "次版本号为:$ci,大于10"
else
  echo "次版本号为:$ci,不大于10"
fi

测试示例:

4、检查 nginx 服务是否正在运行,若未运行则启动 nginx 服务并设置其开机自启,同时输出相应操作信息。

#!/bin/bash

# 检查 Nginx 服务状态
systemctl status nginx >/dev/null 2>&1

if [ $? -eq 0 ]; then
    echo "nginx 服务正在运行"
else
    echo "nginx 服务不存在或处于关闭状态"
    echo "尝试开启 nginx 服务"
    
    # 尝试启动 Nginx 服务
    if systemctl start nginx >/dev/null 2>&1; then
        echo "nginx 服务开启成功"
    else
        echo "nginx 服务开启失败"
        exit 1
    fi
    
    # 检查 Nginx 是否已经设置为开机自启
    if systemctl is-enabled --quiet nginx; then
        echo "nginx 服务已经是开机自启,无需设置"
    else
        echo "nginx 服务未设置开机自启动,正在设置开机自启"
        
        # 尝试设置 Nginx 开机自启
        if systemctl enable nginx >/dev/null 2>&1; then
            echo "nginx 开机自启设置成功"
        else
            echo "nginx 开机自启设置失败:$(systemctl enable nginx 2>&1)"
            exit 1
        fi
    fi
fi

测试示例:

5、编写一个函数,接收 $1 变量作为主机地址,用于判断该指定主机是否能够 ping 通并给出结果。

#!/bin/bash

# 定义函数来检查主机是否能够 ping 通
ping_host() {
    local host=$1
    if ping -c 2 -W 2 "$host" &> /dev/null; then
        echo "主机 $host 可以 ping 通"
    else
        echo "主机 $host 无法 ping 通"
    fi
}

# 检查是否提供了主机地址参数
if [ -z "$1" ]; then
    echo "请提供一个主机地址作为参数"
    exit 1
fi

# 调用函数并传递主机地址参数
ping_host "$1"

测试示例:

 6、编写一个报警脚本,当满足以下条件时向指定邮箱发送告警邮件:根分区剩余空间小于 20%;内存已用空间大于 80%。并设置该脚本配合 crond 服务每 5 分钟执行一次检查,发送邮件的命令示例为 [root@locaklhost ~]# echo "邮件正文" | mail -s "邮件主题" alice。

#!/bin/bash

# 邮件接收者
email=邮箱号     # 设置为相应的邮箱号

# 检查根分区剩余空间
use1=$(df / | grep / | awk '{ print $5 }' | sed 's/%//g')
if [ "$use1" -gt 80 ]; then
    echo "警告:根分区剩余空间小于 20%,已用 $use1%" | mail -s "根分区空间告警" $email
fi

# 检查内存使用情况
shu1=$(free -m | grep "Mem:" | tr -s " " | cut -d " " -f 3)
shu2=$(free -m | grep "Mem:" | tr -s " " | cut -d " " -f 2)
use2=$(echo "scale=2; ($shu1 / $shu2) * 100" | bc)
if [ $(echo "$use2 > 80" | bc) -eq 1 ]; then
    echo "警告:内存已用空间大于 80%,已用 $use2%" | mail -s "内存使用告警" $email
fi

设置脚本执行权限、配置定时任务

使用crontab配置定时任务,每五分钟执行一次。

在crontab文件中添加:*/5 * * * *  /root/sh/6.sh

测试示例:

7、编写一个脚本,判断用户输入的内容是否为数字,若是数字则进一步判断该数字是否大于 10 并输出结果。

#!/bin/bash

# 提示用户输入内容
echo "请输入一个数字:"
read input

# 判断输入是否为数字
if [[ $input =~ ^[0-9]+$ ]]; then
    # 输入是数字
    if [ $input -gt 10 ]; then
        echo "输入的数字 $input 大于 10"
    else
        echo "输入的数字 $input 不大于 10"
    fi
else
    # 输入不是数字
    echo "输入的内容不是一个有效的数字"
fi

测试示例:

8、编写一个脚本,用于计算用户输入的任意两个整数的和、差、乘积、商、余数。在脚本中先判断用户输入的参数数量是否为两个,如果不是则提示正确的用法;接着判断用户输入的是否为整数,如果不是则给出提示并终止脚本运行。

#!/bin/bash

# 检查参数数量是否为两个
if [ $# -ne 2 ]; then
    echo "请传入两个整数参数: <整数1> <整数2>"
    exit 1
fi

# 检查输入是否为整数
if ! [[ $1 =~ ^-?[0-9]+$ ]] || ! [[ $2 =~ ^-?[0-9]+$ ]]; then
    echo "错误:输入的参数必须是整数"
    exit 1
fi

# 获取输入的两个整数
num1=$1
num2=$2

# 检查第二个整数是否为0,避免除法和取余操作的错误
if [ $num2 -eq 0 ]; then
    echo "错误:第二个整数不能为0,因为除法和取余操作无法进行"
    exit 1
fi

# 计算和、差、乘积、商和余数
sum=$((num1 + num2))
diff=$((num1 - num2))
product=$((num1 * num2))
quotient=$((num1 / num2))
remainder=$((num1 % num2))

# 输出结果
echo "输入的整数为:$num1 和 $num2"
echo "和:$sum"
echo "差:$diff"
echo "乘积:$product"
echo "商:$quotient"
echo "余数:$remainder"

测试示例:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2248209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

使用ENSP实现默认路由

一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为2.2.2.1/24 ip address 2.2.2.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为1.…

【vue3实现微信小程序】每日专题与分页跳转的初步实现

快速跳转&#xff1a; 我的个人博客主页&#x1f449;&#xff1a;Reuuse博客 新开专栏&#x1f449;&#xff1a;Vue3专栏 参考文献&#x1f449;&#xff1a;uniapp官网 免费图标&#x1f449;&#xff1a;阿里巴巴矢量图标库 ❀ 感谢支持&#xff01;☀ 前情提要 &#x…

小程序-基于java+SpringBoot+Vue的网上花店微信小程序设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…

Opencv+ROS实现颜色识别应用

目录 一、工具 二、原理 概念 本质 三、实践 添加发布话题 主要代码 四、成果 五、总结 一、工具 opencvros ubuntu18.04 摄像头 二、原理 概念 彩色图像&#xff1a;RGB&#xff08;红&#xff0c;绿&#xff0c;蓝&#xff09; HSV图像&#xff1a;H&#xff0…

解决 java -jar 报错:xxx.jar 中没有主清单属性

问题复现 在使用 java -jar xxx.jar 命令运行 Java 应用程序时&#xff0c;遇到了以下错误&#xff1a; xxx.jar 中没有主清单属性这个错误表示 JAR 文件缺少必要的启动信息&#xff0c;Java 虚拟机无法找到应用程序的入口点。本文将介绍该错误的原因以及如何通过修改 pom.xm…

JavaWeb——SpringBoot原理

10.1. 配置优先级 10.1.1. 配置文件 properties > yml(推荐) > yaml 10.1.2. Java系统属性、命令行参数 命令行参数 > Java系统属性 > 配置文件 10.2. Bean管理 10.2.1. 手动获取bean ApplicationContext&#xff0c;IOC容器对象 10.2.2. bean作用域 10.2.3.…

【AI绘画】Midjourney进阶:色调详解(上)

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AI绘画 | Midjourney 文章目录 &#x1f4af;前言&#x1f4af;Midjourney中的色彩控制为什么要控制色彩&#xff1f;为什么要在Midjourney中控制色彩&#xff1f; &#x1f4af;色调白色调淡色调明色调 &#x1f4af…

STM32F103外部中断配置

一、外部中断 在上一节我们介绍了STM32f103的嵌套向量中断控制器&#xff0c;其中包括中断的使能、失能、中断优先级分组以及中断优先级配置等内容。 1.1 外部中断/事件控制器 在STM32f103支持的60个可屏蔽中断中&#xff0c;有一些比较特殊的中断&#xff1a; 中断编号13 EXTI…

【Vue3+Pinia】Vue新一代状态管理器Pinia

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

【消息序列】详解(7):剖析回环模式--设备测试的核心利器

目录 一、概述 1.1. 本地回环模式 1.2. 远程环回模式 二、本地回环模式&#xff08;Local Loopback mode&#xff09; 2.1. 步骤 1&#xff1a;主机进入本地环回模式 2.2. 本地回环测试 2.2.1. 步骤 2a&#xff1a;主机发送HCI数据包并接收环回数据 2.2.2. 步骤 2b&…

大厂也在用的分布式链路追踪:TraceIdFilter + MDC + Skywalking

痛点 查线上日志时&#xff0c;同一个 Pod 内多线程日志交错&#xff0c;很难追踪每个请求对应的日志信息。 日志收集工具将多个 Pod 的日志收集到同一个数据库中后&#xff0c;情况就更加混乱不堪了。 解决 TraceId MDC 前端每次请求时&#xff0c;添加 X-App-Trace-Id 请…

leetcode - 2116. Check if a Parentheses String Can Be Valid

Description A parentheses string is a non-empty string consisting only of ‘(’ and ‘)’. It is valid if any of the following conditions is true: It is ().It can be written as AB (A concatenated with B), where A and B are valid parentheses strings.It ca…

如何启动 Docker 服务:全面指南

如何启动 Docker 服务:全面指南 一、Linux 系统(以 Ubuntu 为例)二、Windows 系统(以 Docker Desktop 为例)三、macOS 系统(以 Docker Desktop for Mac 为例)四、故障排查五、总结Docker,作为一种轻量级的虚拟化技术,已经成为开发者和运维人员不可或缺的工具。它允许用…

安装MySQL服务

安装版本MySQL8的安装包 安装界面 在这里选择MySQL中的Server only 只安装服务器端 如果选择custom需要如下图 进入配置导向&#xff0c;点击ready to configure&#xff0c;点击next即可 采用默认形式 执行成功后&#xff0c;会出现自动选择项 点击next然后再点击Finish 启动…

第六届国际科技创新学术交流大会暨新能源科学与电力工程国际(NESEE 2024)

重要信息 会议官网&#xff1a;nesee.iaecst.org 会议时间&#xff1a;2024年12月6-8日 会议地点&#xff1a; 中国-广州&#xff08;越秀国际会议中心) 大会简介 新能源科学与电力工程国际学术会议&#xff08;NESEE 2024&#xff09;作为第六届国际科技创新学术交流大会分…

Windows安装nacos

目录 一、下载 二、运行 三、运行失败 四、运行成功 一、下载 下载链接: Nacos Server 下载 | Nacos 官网 解压: 二、运行 进入nacos/bin, 运行startup.cmd 三、运行失败 如果出现黑窗口一闪而过, 说明失败了, 可能原因如下: ① 环境变量: 需要 JAVA_HOME 为 JDK8 ②…

Rust Newtype模式(通过结构体封装现有类型来创建新的类型)(单字段结构体,通过.0访问)模式匹配、解构、DerefMut

文章目录 深入理解Rust中的Newtype模式什么是Newtype模式&#xff1f;Newtype模式的基本形式Newtype的访问访问 Newtype 的值1. 通过 .0 访问字段2. 通过方法访问3. 通过模式匹配&#xff08;解构&#xff09;访问 总结 Newtype模式的应用场景1. 类型安全2. 增强可读性3. 定制化…

网络层协议IP

对于网络层我们直接通过IP协议来了解其内容 一.IP协议 首先我们先来了解几个概念&#xff1a; 主机&#xff1a;配有IP地址&#xff0c;但是不进行路由控制的设备 路由器&#xff1a;配有IP地址&#xff0c;同时进行路由控制的设备 节点&#xff1a;主机和路由器的统称 所以现在…

Qt界面篇:QMessageBox高级用法

1、演示效果 2、用法注意 2.1 设置图标 用于显示实际图标的pixmap取决于当前的GUI样式。也可以通过设置icon pixmap属性为图标设置自定义pixmap。 QMessageBox::Icon icon(

【强化学习的数学原理】第02课-贝尔曼公式-笔记

学习资料&#xff1a;bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接&#xff1a;强化学习的数学原理 西湖大学 赵世钰 文章目录 一、为什么return重要&#xff1f;如何计算return&#xff1f;二、state value的定义三、Bellman公式的详细推导四、公式向量形式…