码迷,mamicode.com
首页 > 系统相关 > 详细

Shell练习(十五)

时间:2018-03-21 14:59:25      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:shell

习题1:监控网卡

要求:每10分钟检测一次指定网卡流量;如果网卡流量为0,则重启网卡!(使用cron任务计划!)

参考答案:

#!/bin/bash
# date:2018年3月21日
LANG=en
n1=`sar -n DEV 1 60|grep ens33|grep -i average|awk '{print $5}'|sed 's/\.//g'`
n2=`sar -n DEV 1 60|grep ens33|grep -i average|awk '{print $6}'|sed 's/\.//g'`
if [ $n1 == "000" ] && [ $n2 == "000" ]
then
    ifdown ens33
    ifup ens33
fi

习题2:判断日期是否合法

要求:用shell脚本判断输入的日期是否合法。就是判断日期是都是真实的日期,比如20170110就是合法日期,20171332就不合法。

参考答案:

#!/bin/bash
# date:2018年3月21日
if [ $# -ne 1 ] || [ ${#1} -ne 8 ]
then
    echo "Usage: bash $0 yyyymmdd"
    exit 1
fi
date=$1
year=${date:0:4}
month=${date:4:2}
day=${date:6:2}

if echo $day|grep -q '^0'
then
    day=`echo $day|sed 's/^0//'`
fi

if cal $month $year > /dev/null 2> /dev/null
then
    daym=`cal $month $year|grep -v "$year"|grep -w "$day"`
    if [ "$daym" != "" ]
    then
        echo "ok"
    else
        echo "Error:Please input a right date"
        exit 1
    fi
else
    echo "Error: Please input a right date"
    exit 1
fi


习题3:检查服务

要求:先判断是否安装http和mysql,没有安装进行安装,安装了检查是否启动服务,若没有启动则需要启动服务。

参考答案:

#!/bin/bash
# date:2018年3月21日
if_install()
{
    n=`rpm -qa|grep -cw "$1"`
    if [ $n -eq 0 ]
    then
        echo "$1 not install."
    else
        echo "$1 installed."
    fi
}

if_install httpd
if_install mysql

chk_ser()
{
    p_n=`ps -C "$1" --no-heading |wc -l`
    if [ $p_n -eq 0 ];then
        echo "$1 not start."
        systemctl start $1
  else
        echo "$1 started."
    fi
}

chk_ser httpd
chk_ser mysqld


习题4:3位随机数字

要求:写一个脚本产生随机3位的数字,并且可以根据用户的输入参数来判断输出几组。 比如,脚本名字为 number3.sh。

    执行方法:
    bash  number3.sh
    直接产生一组3位数字。
    bash number3.sh 10
    插上10组3位数字。

思路: 可以使用echo $RANDOM获取一个随机数字,然后再除以10,取余获取0-9随机数字,三次运算获得一组。

参考答案:

#!/bin/bash
# date:2018年3月21日
get_num(){
    n=$[$RANDOM%10]
    echo $n
}
get_numbers(){
    for i in 1 2 3
    do
        a[$i]=`get_num`
    done
    echo "${a[*]}"
}
if [ -n "$1" ];then
    m=`echo $1|sed 's/[0-9]//g'`
    if [ -n "$m" ];then
        echo "Usage: bash $0 n, n is a number."
        exit 1
    else
        for i in `seq 1 $1`
        do
            get_numbers
        done
    fi
else
    get_numbers
fi

习题5:三行变一行

参考答案:

技术分享图片


Shell练习(十五)

标签:shell

原文地址:http://blog.51cto.com/11924224/2089379

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!