歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell編程 測試單個主機或網段主機存活

shell編程 測試單個主機或網段主機存活

日期:2017/3/1 10:09:07   编辑:SHELL編程

寫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類網,由於本人網絡方面知識的欠缺,所以判斷的值,估計挺不正確的,列位就諒解一下吧....

Copyright © Linux教程網 All Rights Reserved