LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1210|回复: 4

求助:急需一个关于ping的脚本

[复制链接]
发表于 2007-9-24 21:57:39 | 显示全部楼层 |阅读模式
想写一个shell脚本,要实现的功能是:
有电脑1和电脑2,在电脑1上运行该脚本,使之每隔10分钟ping电脑2一次(并限定ping出的包的个数),如果不能ping通的话,就执行另外一个脚本,直到ping通为止(但最多循环5次)。然后把该脚本放到启动执行项目里面。

没有学过shell编程,但这个功能急着要用。还望懂得的朋友帮帮忙。
发表于 2007-9-24 23:25:20 | 显示全部楼层
ping检查脚本:

COUNT=3
LOOP=5
HOST2_IP=12.34.56.78

while [ $LOOP -gt 0 ]
do
    TEST=`ping -c ${COUNT} ${HOST2_IP}|grep loss|awk '{print $6}'`
    if [ "${TEST}" = "100%" ]; then
        echo "ping failed"
        # 断开,执行 ....,继续循环直到够5次
    else
        echo "ping OK"
        # 连通,执行 ....,然后跳出循环
        break
    fi
    LOOP=`expr $LOOP - 1`
done

用crontab每隔10分钟执行一次这个脚本,如果还不明白建议花点时间学习shell。
回复 支持 反对

使用道具 举报

发表于 2007-9-25 08:46:07 | 显示全部楼层

  1. #!/bin/bash
  2. COUNT=4  #每次ping的时候发送4个包
  3. IP=x.x.x.x  #需要ping测试的机器
  4. while true
  5. do
  6.    LOOP=1
  7.    while [ $LOOP -le 5 ] #循环5次
  8.    do
  9.         ping -c $COUNT $IP >&/dev/null  #ping测试,不输出任何结果
  10.         if [ X$? == X0 ]  #提取ping命令执行的状态 0 或者 非0 ,0表示成功
  11.         then
  12.                 do something here # 执行你指定的程序
  13.                 break  #退出循环
  14.         fi
  15.         LOOP=$(($LOOP+1))
  16.    done
  17.    sleep 600  #休息600秒
  18. done
复制代码


[color="Magenta"]
注:
运行环境 debian lenny
bash --version                                                                                                      
GNU bash, version 3.1.17(1)-release (i486-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
回复 支持 反对

使用道具 举报

发表于 2007-9-28 19:34:14 | 显示全部楼层
三楼的比二楼的好,效率高一点!!
回复 支持 反对

使用道具 举报

发表于 2007-10-1 00:03:43 | 显示全部楼层
優化一下:
  1. #!/bin/bash
  2. COUNT=4  #每次ping的时候发送4个包
  3. IP=x.x.x.x  #需要ping测试的机器
  4. while :
  5. do
  6.    for ((i=1;i<=5;i++)) #循环5次
  7.    do
  8.         if ping -c $COUNT -w $COUNT $IP >&/dev/null    # 加個 -w 避免等太久
  9.         then
  10.                 break # 通的話,那就不用做事了
  11.         else
  12.                 do something here # 执行你指定的程序
  13.                 sleep 1 # 這裡最好也等一下再循環
  14.         then
  15.    done
  16.    sleep 600  #休息600秒
  17. done
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表