通过shell编程来测试单个主机或网段主机存活
发布时间:2016-10-25 10:42:47 所属栏目:Linux 来源:网络整理
导读:题目:编写shell脚本,使用ping判断指定IP或者IP端内的主机存活。 只接受规定的IP格式输入和IP段输入(例如:192.168.2.88 或 192.168.2.)注意,写IP段的时候后
题目:编写shell脚本,使用ping判断指定IP或者IP端内的主机存活。 只接受规定的IP格式输入和IP段输入(例如:192.168.2.88 或 192.168.2.)注意,写IP段的时候后面有个点...脚本简陋...看官将就一下吧;上代码: #!/bin/bash read -p "Please input ip:(192.168.0.22) or (192.168.0.)" Ip Test=`echo $Ip|grep "<[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"` Test1=`echo $Ip|grep "<[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.$"` #echo "a IP is: $Test" #echo "IP.is $Test1" if [[ -z $Test && -z $Test1 ]];then echo "input error!" exit 1 elif [[ -n $Test ]];then for i in `seq 1 4` do Cut=`echo $Test|cut -d"." -f$i` if [ $i -eq 1 ];then if [ $Cut -gt 223 -o $Cut -lt 1 ];then echo "input $Test ---->> $Cut invalid" exit 2 fi else if [ $Cut -gt 254 ];then echo "input $Test ---->> $Cut invalid" exit 2 fi fi done if ping -c 2 -W 1 $Test &> /dev/null ;then echo "Have $Test" else echo "No $Test" fi else for i in `seq 1 3` do Cut=`echo $Test1|cut -d"." -f$i` if [ $i -eq 1 ];then if [ $Cut -gt 223 -o $Cut -lt 1 ];then echo "input $Test1 ---->> $Cut invalid" exit 2 fi else if [ $Cut -gt 254 ];then echo "input $Test1 ---->> $Cut invalid" exit 2 fi fi done declare -i Num declare -i Fail Num=0 Fail=0 for i in `seq 1 10` do if ping -c 1 -W 1 ${Test1}$i &> /dev/null ;then echo "Have ${Test1}$i" Num=$((Num+1)) else Fail=$((Fail+1)) echo "No ${Test1}$i" fi done echo "Host online have $Num ." echo "Host no online have $Fail ." 最后一个for循环,我嫌多,只写了10个值,有兴趣的哥们,自己改 seq 1 10改成1 254即可...还有关于a类b类c类网,由于本人网络方面知识的欠缺,所以判断的值,估计挺不正确的,列位就谅解一下吧.... URL:http://www.bianceng.cn/OS/Linux/201410/45682.htm (编辑:佛山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |