Shell脚本练习

  1. ping主机测试,查看主机是否存活;

Vim  1.sh

#!/bin/bash

# 函数:检查主机是否存活

function check_host_alive() {

    ping -c 1 -w 2 $1 > /dev/null 2>&1

    if [ $? -eq 0 ]; then

        echo "主机 $1 存活"

    else

        echo "主机 $1 不可达"

    fi

}

# 调用函数测试主机是否存活,这里假设要测试的主机IP是192.168.1.100,你可替换成实>际要测试的主机IP

check_host_alive 192.168.190.149

Bash 1.sh

测试

read -p "请输入要测试的主机地址: " host_ip

check_host_alive $host_ip

2. 判断一个用户是否存在;

Vim 2.sh

function check_user_exists(){

        if id "$1" > /dev/null 2>&1;then

                echo "用户 $1 存在"

        else

                echo "用户 $1 不存在"

        fi

}

read -p "请输入要测试的用户: " user_name

check_user_exists $user_name

~               

      

     

3.判断当前内核主版本是否为3,且次版本是否大于10;

function check_kernel_version() {

    kernel_version=$(uname -r)

    major_version=$(echo $kernel_version | cut -d. -f1)

    minor_version=$(echo $kernel_version | cut -d. -f2)

    if [ $major_version -eq 3 ] && [ $minor_version -gt 10 ]; then

        echo "内核主版本为3且次版本大于10"

    else

        echo "内核版本不符合要求"

    fi

}

check_kernel_version

5、判断nginx是否运行;如果没有,则运行它,并且开机启动

function check_and_start_nginx(){

        if pgrep nginx > /dev/null;then

                echo "nginx正在运行"

        else

                echo "nginx未运行,正在启动..."

                systemctl start nginx

                systemctl enable nginx

                echo "nginx已启动并设置为开机启动"

        fi

}

check_and_start_nginx

~                                                                              

~                           

6、判断指定的主机是否能ping通,必须使用$1变量;

# 函数:判断指定主机是否能ping通

function check_host_pingable() {

    ping -c 1 -w 2 $1 > /dev/null 2>&1

    if [ $? -eq 0 ]; then

        echo "主机 $1 能ping通"

    else

        echo "主机 $1 不能ping通"

    fi

}

# 示例用法,假设在脚本命令行参数中传入要检查的主机地址

# 比如执行脚本时:./script.sh 192.168.1.100

check_host_pingable 192.168.190.149

7、报警脚本,要求如下:

       根分区剩余空间小于20%

       内存已用空间大于80%

       向邮箱发送告警邮件

       配合crond每5分钟检查一次

       [root@locaklhost ~]# echo "邮件正文"  | mail -s "邮件主题" alice

#!/bin/bash

used=$( df / | grep / | tr -s " " | cut -d " " -f 5 | sed 's/%//')

used_mem=$(free -m | grep Mem | tr -s " " | cut -d " " -f 3)

total_mem=$(free -m | grep Mem | tr -s " " | cut -d " " -f 2)

used_percent=$(echo "scale=2; ($used_mem / $total_mem) * 100 " | bc)

used_percent_int=$(echo "$used_percent" | cut -d '.' -f 1)

if [ $used -gt 80 ];then

        echo "根分区剩余空间小于20%!" | mail -s "dir_waring" 2656645312@qq.com &> /dev/null

fi

if [ $used_percent_int -gt 80 ];then

        echo "内存已用空间大于80%!" | mail -s "used_waring" 2656645312@qq.com & /dev/null

fi

                        

8、判断用户输入的是否是数字,如果是数字判断该数字是否大于10;

#!/bin/bash

read -p "请输入一个字符串: " input

# 判断是否为数字

if [[ $input =~ ^[0-9]+$ ]]; then

    num=$input

    if [ $num -gt 10 ]; then

        echo "$num 是大于 10 的数字"

    else

        echo "$num 是数字但不大于 10"

    fi

else

    echo "$input 不是数字"

~                         

9、计算用户输入的任意两个整数的和、差、乘积、商、余数,

       判断用户输入的参数是否是两个,如果不是,提示用法;

       判断用户输入的是否是整数,如果不是,则给出提示终止运行。 

#!/bin/bash

# 检查传入参数个数是否为2

if [ $# -ne 2 ]; then

    echo "Usage: $0 integer1 integer2"

    exit 1

fi

# 检查输入的是否为整数

is_int1=false

is_int2=false

if [[ $1 =~ ^-?[0-9]+$ ]]; then

    is_int1=true

fi

if [[ $2 =~ ^-?[0-9]+$ ]]; then

    is_int2=true

fi

# 修正后的条件判断方式

if [ ! $is_int1 ] || [ ! $is_int2 ]; then

    echo "Both inputs must be integers."

    exit 1

fi

num1=$1

num2=$2

sum=$((num1 + num2))

diff=$((num1 - num2))

product=$((num1 * num2))

quotient=$((num1 / num2))

remainder=$((num1 % num2))

echo "Sum: $sum"

echo "Difference: $diff"

echo "Product: $product"

echo "Quotient: $quotient"

echo "Remainder: $remainder"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值