Не выключать, если ping
olegon 14 декабря, 2006 - 10:42
#!/bin/bash while [ 1 ];do ping -c 3 10.10.20.37 if [ $? != 0 ] then ping -c 3 192.168.10.70 if [ $? != 0 ] then poweroff fi fi done
почему второй, вложенный цикл не отрабатывает? Т.е. терпеливо отрабатывает, пока есть пинг по первому адресу и как только тот пропадает - вырубает комп, не глядя на то, что второй адрес пингуется. Еще раз - оба адреса нормально пингуются при включенных компах.
»
- Для комментирования войдите или зарегистрируйтесь
Ну видимо
Ну видимо потому что в случае удачного пинга переменной просто не присваивается никакого значения, поэтому if проверяет значение еще от прошлого пинга. Сбрасывай переменную во втором цикле.
?
Немножко не понял логики. Если не присваивается, то почему первый цикл нормально отрабатывает? И кроме того, проверил, если удачный - 0, если неудачный (host unreachable) - 1
Я не знаток
Я не знаток шэлл скриптов, но просто по логике - не равно 0 будет выполнятся всегда, когда в значении не стоит 0 или ничего. Т.е. когда переменная не задана, она также считается равной 0. Удачный результат видимо просто не возвращает кода ошибки, поэтому так и остается 1 от прошлого результата.
Сейчас пойду попроверяю свои доводы...
Нет, я был не
Нет, я был не прав видимо. У меня твой скрипт работает нормально. Если пинга по первому адресу нет, а по второму есть poweroff не срабатывает. Срабатывает только когда по обоим хостам нет пинга.
Вроде
Вроде заработало, когда после первой строки поставил пустую строку, а в конце добавил 2(!) пустые. Что за магия, блин..
Вроде точку с
Вроде точку с запятой ставить надо после закрытия скобок ставить надо. Типа
Это если в
Это если в одной строке следующее начинается...