例题46
[root@iZwz96qzfgxh9l2rk7esxnZ xiti]# vim 46.sh #当用户使用-i选项时,显示指定网卡的IP地址;当用户使用-I选项时,显示其指定ip所属的网卡。 #当用户使用除[-i | -I]选项时,显示[-i interface | -I ip]此信息。 #当用户指定信息不符合时,显示错误。(比如指定的eth0没有,而是eth1时) #!/bin/bash ip add |awk -F ': ' '$1 ~ "^[1-9]" {print $2}' > /tmp/ifs.txt get_ip() { ip add show dev $1 |grep inet |awk '{print $2}' |awk -F '/' '{print $1}' } for eth in `cat /tmp/ifs.txt` do myip=`get_ip $eth` if [ -z "$myip" ] then echo $eth else echo $eth $myip fi done > /tmp/if_ip.txt if [ $# -ne 2 ] then echo "请输入正确的格式: bash $0 -i 网卡 或者 bash $0 -I ip" exit fi if [ $1 == "-i" ] then if awk '{print $1}' /tmp/if_ip.txt |grep -qw $2 then eth=$2 ip1=`awk -v aeth=$eth '$1==aeth' /tmp/if_ip.txt|sed "s/$eth //"` echo "网卡$2的ip是 $ip1" else echo "你指定的网卡不对,系统中的网卡有:`cat /tmp/ifs.txt|xargs`" exit fi elif [ $1 == "-I" ] then if grep -qw " $2 " /tmp/if_ip.txt then eth=`grep -w " $2 " /tmp/if_ip.txt|awk '{print $1}'` echo "IP $2对应的网卡是$eth" else echo "你指定的ip不对,系统中的IP有:`ip add |grep inet |awk '{print $2}'|awk -F '/' '{print $1}'|xargs`" exit fi else echo "请输入正确的格式: bash $0 -i 网卡 或者 bash $0 -I ip" fi
例题47
[root@iZwz96qzfgxh9l2rk7esxnZ xiti]# vim 47.sh #写一个脚本产生随机3位的数字,并且可以根据用户的输入参数来判断输出几组 #!/bin/bash get_number() { for i in `seq 0 2` do a[$i]=$[$RANDOM%10] done echo ${a[@]}|sed s'/ //g' } if [ $# -eq 0 ] then get_number elif [ $# -eq 1 ] then n=`echo $1|sed 's/[0-9]//g'` if [ -n "$n" ] then echo "给定的参数必须是一个数字" exit fi for i in `seq 1 $1` do get_number done |xargs else echo "格式不对,正确的是格式是sh $0 [n],这里的n是一个数字。" fi
例题48
[root@iZwz96qzfgxh9l2rk7esxnZ xiti]# vim 48.sh #写一个shell,先判断是否安装httpd和mysql,没有安装进行安装,安装了检查是否启动服务,若没有启动则需要启动服务 #!/bin/bash if_install() { rpm -q $1 >/dev/null 2>/dev/null if [ $? -eq 0 ] then echo "$1已经安装" return 0 else echo "$1没有安装" return 1 fi } if_install httpd if [ $? -eq 0 ] then if ! pgrep httpd >/dev/null then service httpd start fi else yum install -y httpd fi if_install mysql-server if [ $? -eq 0 ] then if ! pgrep mysqld >/dev/null then service mysqld start fi else yum install -y mysql-server fi
例题49
[root@iZwz96qzfgxh9l2rk7esxnZ xiti]# vim 49.sh #用shell脚本判断输入的日期是否合法 #!/bin/bash if [ $# -ne 1 ] || [ ${#1} -ne 8 ] then echo "请输入正确的格式,sh $0 yyyymmdd" exit 1 fi y=`echo ${1:0:4}` m=`echo ${1:4:2}` d=`echo ${1:6:2}` if echo $d|grep -q "^0" then d=`echo ${1:6:2}|sed 's/^0//'` fi if cal $m $y >/dev/null 2>/dev/null then if ! cal $m $y|grep -qw "$d" then echo "你给的日期是不合法的" else echo "日期合法" fi else echo "你给的日期不合法" fi
例题50
[root@iZwz96qzfgxh9l2rk7esxnZ xiti]# vim 50.sh #每10分钟检测一次指定网卡的流量 #如果流量为0,则重启网卡 #!/bin/bash LANG=en sar -n DEV 1 10|grep -w "$1" > /tmp/sar.tmp in=`grep "Average:" /tmp/sar.tmp|awk '{print $5}'|sed 's/\.//'` out=`grep "Average:" /tmp/sar.tmp|awk '{print $6}'|sed 's/\.//'` if [ $in == "000" ] && [ $out == "000" ] then ifdown $1 ifup $1 fi ~