題目:編寫shell指令碼,使用ping判斷指定IP或者IP端內的主機存活。
只接受規定的IP格式輸入和IP段輸入(例如:192.168.2.88 或 192.168.2.)注意,寫IP段的時候後面有個點...指令碼簡陋...看官將就一下吧;上代碼:
#!/bin/bashread -p "Please input ip:(192.168.0.22) or (192.168.0.)" IpTest=`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 1elif [[ -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" fielse 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類網,由於本人網路方面知識的欠缺,所以判斷的值,估計挺不正確的,列位就諒解一下吧....