$cat aping.sh
#!/bin/sh
pingcmd()
{
prefix="SERVER $1 PING $2"
ping -w 1 -c 1 $2>> /var/log/ping.log
ret=$?
if [ $ret -eq 0 ]
then printf "$prefix\t OK\n"
else printf "$prefix\t ERROR\n"
fi
return 0
}
echo "" > /var/log/ping.log
while [ 1 -eq 1 ]
do
echo "---------------------------------------"
echo "核心网1 1.1 PING FROM 1"
echo "---------------------------------------"
server0="182.87.1.3"
server1="182.87.1.2"
server2="182.87.1.1"
server3="182.87.1.4"
server4="182.87.1.5"
server5="182.87.1.6"
server6="182.87.1.7"
server7="182.87.1.9"
pingcmd $server0 $server1
pingcmd $server0 $server2
pingcmd $server0 $server3
pingcmd $server0 $server4
pingcmd $server0 $server5
pingcmd $server0 $server6
pingcmd $server0 $server7
sleep 5
echo "+++time: `date`" >> /var/log/ping.log
done
持久地执行脚本
$nohup bash aping.sh &
如果交换机有工作不稳定的情况,就可以通过这个脚本产生的日志,确定不稳定的具体的时间。
代码详解
后半段大家应该都明白,就是调用前面创建的函数pingcmd来ping设置在severX里的ip
主要解释下pingcmd函数
prefix="SERVER $1 PING $2" //定义一个字符串,为后面printf输出做准备
ping -w 1 -c 1 $2>/dev/null
//调用ping函数,-w为超时时间;-c为ping的次数;
ping -w 1 -c 1 $2 一起解释为,从脚本所在机去ping之后pingcmd函数的第二个参数(本例为之后建立的serve1-7),超时1秒,执行1次
>/dev/null 的作用是把屏幕的输出从指向到某处,而这里的到/dev/null 的意思是指向空设备,即不需要标准输出
ret=$? //获取返回值,0为ping成功
if [ $ret -eq 0 ] //如果返回值为0,即ping成功
then printf "$prefix\t OK\n" 则输出一开始定义的字符串(例:SERVER 182.87.1.3 PING 182.87.1.2 OK)
else printf "$prefix\t ERROR\n" 同上,输出错误信息(这里前面删除标准输出,就是因为这里自己定义了输出了)
fi
附ping指令详解,还想继续深入了解ping的用法就去下面看看吧
http://hi.baidu.com/raybb/blog/item/a643a001ac5e4f061c958355.html
阅读(1346) | 评论(0) | 转发(0) |