加入收藏 | 设为首页 | 会员中心 | 我要投稿 佛山站长网 (https://www.0757zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

通过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

(编辑:佛山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读