Пинг двух хостов и выключение.

Обсуждение ПО и его настройки
Ответить
KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

Доброго времени суток! В очередной раз прошу помощи. Совершенно ничего не понимаю в скриптописании, но очень хотелось бы иметь скрипт, который пингует 2 хоста и если оба не отвечают, то происходит выключение, а если ответил хотя бы один хост, то скрипт завершает свою работу. Буду очень признателен за помощь!


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Код: Выделить всё

:local PingCount 3;
:local One x.x.x.x;
:local Too xx.xx.xx.xx;
:local ResultOne [/ping count=$PingCount $One interface=wan];
:local ResultToo [/ping count=$PingCount $Too interface=wan];
:if ($ ResultOne && $ResultToo = 0) do={/system shutdown}

Что-то подобное такой конструкции, проверяйте у себя. Соответственно:
wan- это интерфейс, который Вы будете пинговать
х.х.х.х - адрес первого проверяемого ресурса
хх.хх.хх.хх - адрес второго проверяемого ресурса


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

Спасибо!
Остался только один нюанс, если хотя бы один из двух хостов не отвечает то скрипт отрабатывает выключение. В начале вобще не хотело запускаться, методом тыка пришел вот к такому виду, который при не ответе любого из двух хостов выключает микротик.

Код: Выделить всё

:local PingCount 3;
:local One 192.168.11.10;
:local Too 192.168.11.100;
:local ResultOne [/ping count=$PingCount $One interface=ether1];
:local ResultToo [/ping count=$PingCount $Too interface=ether1];
:if ($ResultOne & $ResultToo = 0) do={/system reboot}


Если в строке :if ($ResultOne & $ResultToo =0) оставить "&&", то ничего не происходит вобще.


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Ну посмотрите в скриптинг, знак "&&" - это логичекое "и", а Ваше "&" ничего не обозначает...
А с написанием я немного ошибся, пропустил :hi_hi_hi:

Код: Выделить всё

:local PingCount 3;
:local One x.x.x.x;
:local Too xx.xx.xx.xx;
:local ResultOne [/ping count=$PingCount $One interface=wan];
:local ResultToo [/ping count=$PingCount $Too interface=wan];
:if ($ResultOne=0 && $ResultToo=0) do={/system shutdown}

И всё отрабатывает, как и хотелось...


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

Да! Действительно все заработало, а по поводу одного &, это так, чисто мои додумки, бо смутил повторяющийся знак, подумал что апшибка :hi_hi_hi: Огромное спасибо!


KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

Все супер, но вот еще хотелось бы узнать, а прикрутить сюда еще проверку аптайма микротика сложно? Испытания показали что микротик не считает время от начала старта системы, а берет в шедулере "стар тайм" и отталкиваясь от него производит запуск, тоесть если старт тайм, допустим, 18:00, а интервал запуска каждые 2 минуты, то каждую четную минуту будет отрабаывать скрипт, не зависимо прошло ли 2 минуты с начала запуска системы. В моем случае не успевают подняться хосты после сбоя питания и микротик выключается. Было бы не плохо если бы скрипт проверил аптайм микротика и если таковой меньше допустим 5 минут, то ничего не происходит.


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

А он Вам надо? Там такое нагромождение будет, что "мама не горюй!" И если Вы ничего не понимаете в скриптах, то тем более не стоит туда залезать. Делаете два шедулера. Первый:

Код: Выделить всё

/system scheduler add name="Ras" on-event={/system scheduler disable Dva; :delay 300; /system scheduler enable Dva;} interval=00:00:00 start-time=startup 

Второй:

Код: Выделить всё

/system scheduler add name="Dva" on-event={/system script run Myscript} interval=00:02:00 start-time=startup

Скрипт называете Myscript, в нем прописываете код, который мы раньше написали и всё должно отрабатывать на раз-два.
P.S.: Конечно, если Вас такой вариант не устраивает, можно прикрутить отложенный старт по скрипту. Но тут надо понимать, что делаешь, если есть желание, разбирайтесь, я скрипт давал viewtopic.php?p=18099#p18099


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
KARaS'b
Сообщения: 1199
Зарегистрирован: 29 сен 2011, 09:16

Попробовал вот так и все получилось!

Код: Выделить всё

:local PingCount 3;
:local One 192.168.11.10;
:local Too 192.168.11.100;
:local ResultOne [/ping count=$PingCount $One interface=ether1];
:local ResultToo [/ping count=$PingCount $Too interface=ether1];
:local Uptime [/system resource get uptime];
:if ($ResultOne=0 && $ResultToo=0 && $Uptime>00:05:00) do={/system shutdown}

Еще раз огромное спасибо!


Аватара пользователя
podarok66
Модератор
Сообщения: 4355
Зарегистрирован: 11 фев 2012, 18:49
Откуда: МО

Здорово)))


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Ответить