红联Linux门户
Linux帮助

菜鸟求助,来拯救我吧恩人!

发布时间:2011-01-12 21:29:09来源:红联作者:bbsxb520
#!/bin/sh
while true do
ping -w 5 -c 1 192.168.1.1 > /dev/null
ret=$?
if [ $ret -eq 0 ]

ping -w 5 -c 1 192.168.1.2 > /dev/null
ret=$?
if [ $ret -eq 0 ]

ping -w 5 -c 1 192.168.1.3 > /dev/null
ret=$?
if [ $ret -eq 0 ]
then sleep 180
fi
fi

else
shutdown -h -t 300

fi
done

上面这个脚本运行不了啊,好像是if写的不太对路,哪位高手帮我修改一下!!!
还有不知道这个命令具不具备当脚本开始执行SHUTDOWN后,在延迟关机这段时间里如果PING通了是否可以让它取消SHUTDOWN命令然后继续循环下去的能力?如果没有麻烦哪位大哥帮我赋予它这个能力吧!
麻烦高手们了,小弟不胜感激啊!
文章评论

共有 10 条评论

  1. qxwyp 于 2011-11-28 20:26:58发表:

    {:2_96:}

  2. ai0909 于 2011-11-01 14:02:06发表:

    [code][/code]

  3. ckoh 于 2011-10-30 11:28:27发表:

    路过。。。

  4. ai0909 于 2011-10-21 15:43:36发表:

    路过。。。

  5. adsp21060 于 2011-10-18 16:34:17发表:

    你这是什么环境?没用过

  6. ai0909 于 2011-10-18 16:23:21发表:

    {:2_99:}

  7. duxiuchun 于 2011-02-04 12:26:39发表:

    #!/bin/sh ##指定执行此shell的bash是/bin/sh
    while true do ##使用while循环实现目标 true是死循环 不建议用这个值应 使用变量跳出循环
    ping -w 5 -c 1 192.168.1.1 > /dev/null ## ping 一次 主机 192.168.1.1 将输出文件转向到/dev/null
    ret=$? ##将ping命令执行的传回值放到变量ret中 若成功则是0 否则为非零

    if [ $ret -eq 0 ] ##判断ret是不是0 若是则ping 192.168.1.2 注意:if [] ;then ... else ... fi 用的时候 尽量 写标准
    ping -w 5 -c 1 192.168.1.2 > /dev/null ##此处完全不必要用if 语句 建议使用 &&
    ret=$?
    if [ $ret -eq 0 ]
    ping -w 5 -c 1 192.168.1.3 > /dev/null
    ret=$?
    if [ $ret -eq 0 ]
    then sleep 180
    fi
    fi
    else
    shutdown -h -t 300
    fi

    done
    你的目标是:持续循环的ping192.168.1.1主机,如果ping通了则去接着ping主机192.168.1.2 通了继续ping主机 192.168.1.3 将标准输出文件丢到垃圾箱了 如果ping 192.168.1.1 时不通 则 300s 关机 ##后面是说明 下面是修改过的 抱歉没有实验!

    ###################################################################################
    #!/bin/sh
    while true ## 用边替换 true 可以让脚本自动结束退出 ;也可以加 break 我没有改 请自行改改
    do

    ping -w 5 -c 1 192.168.1.1 > /dev/null
    if [ $? -eq 0 ] ;then
    ping -w 5 -c 1 192.168.1.2 > /dev/null &&
    ping -w 5 -c 1 192.168.1.3 > /dev/null &&
    sleep 10
    echo " OK ! 任务完成。" ##加的echo语句用于追踪!写脚本时候多加几个可以方便差错!
    else
    echo "NO! 任务失败!300秒后关机!"
    shutdown -h -t 300
    fi

    done

  8. qxhong 于 2011-01-30 09:52:09发表:

    不会玩

  9. wangtan471x 于 2011-01-15 12:54:44发表:

    帮不了你啊 !

  10. pl_014 于 2011-01-13 18:10:36发表:

    有些语言里,if语句就是用if...fi作为一对,不过还需要命令行的输出来判断错误所在。