标签: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
原文地址:http://blog.51cto.com/11924224/2089379