#!/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命令然后继续循环下去的能力?如果没有麻烦哪位大哥帮我赋予它这个能力吧!
麻烦高手们了,小弟不胜感激啊!
qxwyp 于 2011-11-28 20:26:58发表:
{:2_96:}
ai0909 于 2011-11-01 14:02:06发表:
[code][/code]
ckoh 于 2011-10-30 11:28:27发表:
路过。。。
ai0909 于 2011-10-21 15:43:36发表:
路过。。。
adsp21060 于 2011-10-18 16:34:17发表:
你这是什么环境?没用过
ai0909 于 2011-10-18 16:23:21发表:
{:2_99:}
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
qxhong 于 2011-01-30 09:52:09发表:
不会玩
wangtan471x 于 2011-01-15 12:54:44发表:
帮不了你啊 !
pl_014 于 2011-01-13 18:10:36发表:
有些语言里,if语句就是用if...fi作为一对,不过还需要命令行的输出来判断错误所在。