Linux——shell练习题01

12 篇文章 0 订阅

题目要求:
1、ping主机测试,查看主机是否存活;
2、判断一个用户是否存在;
3、判断当前内核主版本是否为3,且次版本是否大于10;
4、判断vsftpd软件包是否安装,如果没有则自动安装;
5、判断httpd是否运行;
6、判断指定的主机是否能ping通,必须使用$1变量;
7、报警脚本,要求如下:
根分区剩余空间小于20%
内存已用空间大于80%
向用户alice发送告警邮件
配合crond每5分钟检查一次
[root@locaklhost ~]# echo “邮件正文” | mail -s “邮件主题” alice
8、判断用户输入的是否是数字,如果是数字判断该数字是否大于10;
9、计算用户输入的任意两个整数的和、差、乘积、商、余数,
判断用户输入的参数是否是两个,如果不是,提示用法;
判断用户输入的是否是整数,如果不是,则给出提示终止运行。
解题代码如下:
1、ping主机测试,查看主机是否存活
编辑配置:

[root@localhost ex01]# vim 1.sh
#!/bin/bash
read -p "please enter a host ip:" ip
if ping -c 5 $ip > /dev/null
then  echo "the host is alive!"
else
        echo "the host is dead!"
fi
[root@localhost ex01]# chmod 755 1.sh

测试:
192.168.15.128是本虚拟机的IP地址,192.168.15.68是不存在的IP地址请添加图片描述
2、判断一个用户是否存在
编辑配置:

[root@localhost ex01]# vim 2.sh

#!/bin/bash
read -p "please enter a username:" name
if id $name  | grep uid > /dev/null
then    echo " the user is exist!"
else
        echo "the user is not exist!"
fi
[root@localhost ex01]# chmod 755 2.sh                                                                                                              

测试:
请添加图片描述
3、判断当前内核主版本是否为3,且次版本是否大于10
查看内核版本

[root@localhost ex01]# uname -srm
Linux 4.18.0-193.el8.x86_64 x86_64
主版本是:4
次版本是:18

先测试一下命令的可行性
请添加图片描述
编辑配置:

[root@localhost ex01]# vim 3.sh
#!/bin/bash
if [ `uname -srm | cut -d . -f 1 | cut -d " " -f 2` -eq 3 ]
then    echo "Current kernel main version is 3"
else    echo "Current kernel main version is not 3"
fi
if [ `uname -srm | cut -d . -f 2` -gt 10 ]
then    echo "Current kernel minor version is more than 10"
else    echo "Current kernel minor version is less than 10"
fi
[root@localhost ex01]# chmod 755 3.sh

测试:
请添加图片描述
4.判断vsftpd软件包是否安装,如果没有则自动安装
编辑配置:

[root@localhost ex01]# vim 4.sh

#!/bin/bash
if  rpm -qa | grep vsftpd  > /dev/null
then  echo "vsftpd already install!"
else  `yum install vsftpd -y`
fi
[root@localhost ex01]#chmod 755 4.sh  

测试:
在这里插入图片描述

5、判断httpd是否运行
编辑配置:

[root@localhost ex01]# vim 5.sh
#!/bin/bash
if [ "`systemctl is-active httpd`" == "active" ]
then echo "httpd service is start"
else echo "httpd service is no start"
fi
[root@localhost ex01]# chmod 755 5.sh

测试:
请添加图片描述
6、判断指定的主机是否能ping通,必须使用$1变量
编辑配置:

[root@localhost ex01]# vim 6.sh
#!/bin/bash
if ping -c 5 $1 > /dev/null
then  echo "the ip $1 is ok!"
else
        echo "the ip $1 is bad!"
fi
[root@localhost ex01]# chmod 755 6.sh

测试:
请添加图片描述
7、报警脚本,要求如下: 根分区剩余空间小于20% 内存已用空间大于80% 向用户alice发送告警邮件 配合crond每5分钟检查一次 [root@locaklhost ~]# echo “邮件正文” | mail -s “邮件主题” alice
①添加用户alice

[root@localhost ~]# useradd alice
[root@localhost ~]# id alice 
uid=1001(alice) gid=1001(alice) groups=1001(alice)

②先测试一下cut切割根分区已用空间的百分比
请添加图片描述
切割内存使用情况
在这里插入图片描述
③编辑配置:

[root@localhost ex01]# vim 7.sh 
#!/bin/bash
disk=`df -h | grep -w / | tr -s " " |cut -d " " -f 5 | cut -d % -f -1 `
mem_used=`free -m | grep -i mem | awk '{print $3}'`
mem_total=`free -m | grep -i mem | awk '{print $2}'`
mem=` echo $mem_used*100/$mem_total | bc`
if [ "$disk" -gt 80 -o "$mem" -gt 80 ];then
        echo "disk used $disk%,memory used $mem%" | mail -s "mem and disk warning" alice
fi
[root@localhost ex01]#chmod 755 7.sh

④编辑/etc/crontab,使之每5分钟检查一次

*/5  *  *  *  * root     /shell/ex01/7.sh &> /dev/null

请添加图片描述
⑤安装mail服务包

yun install postfix -y

请添加图片描述
⑥测试:
因为我的根分区使用了21%,所以为了看到效果,将“ 根分区剩余空间小于20% ”改为“ 根分区剩余空间小于90%”

[root@localhost ex01]# vim 7.sh 
#!/bin/bash
disk=`df -h | grep -w / | tr -s " " |cut -d " " -f 5 | cut -d % -f -1 `
mem_used=`free -m | grep -i mem | awk '{print $3}'`
mem_total=`free -m | grep -i mem | awk '{print $2}'`
mem=` echo $mem_used*100/$mem_total | bc`
if [ "$disk" -gt 10 -o "$mem" -gt 80 ];then   //仅改变了根分区的判断数值
        echo "disk used $disk%,memory used $mem%" | mail -s "mem and disk warning" alice
fi

切到alice用户查看效果
请添加图片描述
8、判断用户输入的是否是数字,如果是数字判断该数字是否大于10
编辑配置:

[root@localhost ex01]# vim 8.sh

#!/bin/bash
read -p "please enter a number:" num
if  expr $num + 1 &> /dev/null;then
        if [ $num -gt 10 ]
        then echo "The number is integer and is more 10!"
        else echo "The number is iteger!"
        fi
else    echo "The number is not iteger!"
fi
[root@localhost ex01]#chmod 755 8.sh  

测试:
请添加图片描述
9、计算用户输入的任意两个整数的和、差、乘积、商、余数, 判断用户输入的参数是否是两个,如果不是,提示用法; 判断用户输入的是否是整数,如果不是,则给出提示终止运行。
编辑配置:

[root@localhost ex01]# vim 9.sh

#!/bin/bash
num1=$1
num2=$2
if [  "$#" -eq 2 ];then
        if expr $num1 + $num2 &> /dev/null;then
                echo $num1+$num2=$(($num1+$num2))
                echo $num1+$num2=$(($num1-$num2))
                echo $num1*$num2=$(($num1*$num2))
                echo $num1/$num2=$(($num1/$num2))
                echo $num1%$num2=$(($num1%$num2))
        else
                echo "your number is not integer!";exit 1
        fi
else
        echo "your number is not enough!"
fi
[root@localhost ex01]#chmod 755 9.sh

测试:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值