前言:

C语言有一定功底的同学能很快上手linux下的shell脚本应用。以下脚本以应用ping以检测机房机架上个服务器的连通性。并配以必要的注解



新建一个shell脚本的简单流程:

#vim filename.sh            新建并编辑脚本

#chmod +x filename.sh       赋予脚本文件执行权限

#./filename.sh              执行脚本


例子:

ping.sh

#!/bin/bash  
#    
PING() {                                                #声明一个函数PING,重复利用

if ping -c 1 -W 1 $1 &> /dev/null; then    #ping一次某ip,等待时间为一秒。此处直接使用命令返回值作为判定条件。一秒内收到返回值则if判定的条件为真,否则为假。

       echo "$1 is online."                         

else

       echo "$1 is down!!!!!"  
fi

}

while true; do                                      #利用while的无限循环来持续输出巡检结果。

for I in {100..129}; do                         #巡检连续的ip  
{    
PING 192.168.89.$I                             #此处为函数调用处,重复利用了PING函数。‘192.168.89.$I’作为PING()函数的参数($1=192.168.89.$I)    
sleep 0.5                                            #输出结果后睡眠半秒,给用户一个查看时间。    
}    
       done


for I in {89.243,40.1,42.1,49.1,47.1,60.1,54.1,56.1,44.1,42.3,78.1,78.9,222.222}; do   #处理不连续的ip段    
{    
PING 192.168.$I    
sleep 0.5    
}    
    done

#下面一行为完成一次shell的巡检后,给予用户的信息反馈

echo "Finish!  PING process will restart 10 secomd later..    
If you want to exit ,click  Ctrl + Z    
    "    
sleep 10    
done

 

进阶版本:

serping.sh

#!/bin/bash  
#    
PING() {

if ping -c 1 -W 1 $1 &> /dev/null; then

       echo "$1 is online."

else

       echo "$1 is down!!!!!"  
fi

}

while true; do

for I in {'501E',2.{2,4,5},1.123,14.60,1.30,1.23,2.20,'301F',12.{8,5,6,7,3,2},'502A',1.124,0.20,1.{20,25},'502B',1.16,13.2,14.13,3.4,1.10,0.205,16.7,'502C',1.42,16.{4,9,6},13.{4,1},1.24,13.7,16.8,'502D',13.5,1.15,3.29,14.14,3.1,14.{4,7,11,12}}; do        #机架名称和ip字符放在for循环里,连续的ip段使用{}简化表示  
{    
if [ ${I:0:3} \> '256' ];then    #取字符前面三位数比较,大于256(没有大于256的ip地址),则是机架号,直接输出机架号    
{    
echo "机架号:$I"    
#continue       #提前结束本次for循环 ,可省略   
}    
else    
{    
PING 192.168.$I    
sleep 0.5    
}    
fi    
}    
    done

echo "  
Finish!  PING process will restart 10 secomd later..    
If you want to exit ,click  Ctrl + Z    
    "    
sleep 10    
done

 

多学shell例子,就可以融会贯通了。

有兴趣的同学可以复制粘贴到shell脚本中测试。