尝试ping命令判断主机的存活状态 本文共有3454个字,关键词: ``` #!/bin/bash #ping.sh #Auther:stone #取起始IP read -p "please input start IPadr:" startip #判断输入的是否为IP地址 while :; do echo $startip |grep -E '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' && break read -p "please input IPadr(192.168.1.1):" startip done #结束IP read -p "please input end IPadr:" endip #判断结束IP的格式是否正确 while :; do echo $endip |grep -E '\<([1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>\.\<([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\>' && break read -p "please input end IPadr(192.168.1.255)" endip done #分别将起始IP地址和结束IP地址的四段提取出来用于判断 head1=`echo $startip |cut -d . -f 1` head2=`echo $startip |cut -d . -f 2` head3=`echo $startip |cut -d . -f 3` head4=`echo $startip |cut -d . -f 4` tail1=`echo $endip |cut -d . -f 1` tail2=`echo $endip |cut -d . -f 2` tail3=`echo $endip |cut -d . -f 3` tail4=`echo $endip |cut -d . -f 4` #判断结束IP段是否大于起始IP段,有四种可能: if [ $tail1 -lt $head1 ]; then echo -e "\033[31mend IPadr smaller than start IPadr.\033[0m" exit 10 fi if [ $tail1 -lt $head1 ] && [ $tail2 -lt $head2 ]; then echo -e "\033[31mend IPadr smaller than start IPadr.\033[0m" exit 10 fi if [ $tail1 -lt $head1 ] && [ $tail2 -lt $head2 ] && [ $tail3 -lt $head3 ]; then echo -e "\033[31mend IPadr smaller than start IPadr.\033[0m" exit 10 fi if [ $tail1 -lt $head1 ] && [ $tail2 -lt $head2 ] && [ $tail3 -lt $head3 ] && [ $tail4 -lt $head4 ]; then echo -e "\033[31mend IPadr smaller than start IPadr.\033[0m" exit 10 fi #以下为ping命令循环 while :; do if [ $head1 -eq $tail1 ]; then if [ $head2 -eq $tail2 ]; then if [ $head3 -eq $tail3 ]; then for ((d=$head4;d<=$tail4;d++)); do ping -c 1 -W 1 $head1.$head2.$head3.$d &>/dev/null [ $? == 0 ] && echo -e "\033[32m$head1.$head2.$head3.$d is up.\033[0m" [ $? == 1 ] && echo -e "\033[31m$head1.$head2.$head3.$d id down.\033[0m" done exit 0 else for ((d=$head4;d<=255;d++)); do ping -c 1 -W 1 $head1.$head2.$head3.$d &>/dev/null [ $? == 0 ] && echo -e "\033[32m$head1.$head2.$head3.$d is up.\033[0m" [ $? == 1 ] && echo -e "\033[31m$head1.$head2.$head3.$d id down.\033[0m" done declare c=$head3 let c++ while (($tail3-$c>0)); do for ((d=1;d<=255;d++)); do ping -c 1 -W 1 $head1.$head2.$c.$d &>/dev/null [ $? == 0 ] && echo -e "\033[32m$head1.$head2.$c.$d is up.\033[0m" [ $? == 1 ] && echo -e "\033[31m$head1.$head2.$c.$d id down.\033[0m" done done if [ `expr $tail3 - $c` -eq 0 ]; then for ((d=0;d<=$tail4;d++)); do ping -c 1 -W 1 $head1.$head2.$c.$d &>/dev/null [ $? == 0 ] && echo -e "\033[32m$head1.$head2.$c.$d is up.\033[0m" [ $? == 1 ] && echo -e "\033[31m$head1.$head2.$c.$d id down.\033[0m" done exit 0 fi fi fi fi done ``` 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 shell脚本 2017-03-06 评论 1934 次浏览