Скрипт для WoL, если телефон в сети. (Решено)

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Аватара пользователя
Gatarios
Сообщения: 11
Зарегистрирован: 23 фев 2022, 17:41
Откуда: Хабаровск
Контактная информация:

Добрый день.

Хочу организовать запуск компьютера при подключении телефона к роутеру, и так, чтобы происходило это не всегда, а только когда компьютер выключен. Пока получилось только запускать скриптом компьютер и определять наличие телефона в подключениях, и вместе они работают, однако при добавлении условия на проверку включен ли компьютер - всё сломалось. Скрипт просто не выполняется. Перерыл десятки сайтов, форумов и тем, попробовал различные написания ping и его параметры, но подвоха так и не нашёл. Подскажите, пожалуйста, что не так с условием.

Сам скрипт:

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

if ([/ping 192.168.0.2 count=4]=0) do={
if ([/interface wireless registration-table find mac-address=*мак адрес телефона*] != "") do={
/tool wol interface=*интерфейс* mac=*мак адрес компьютера*
}
}
Последний раз редактировалось Gatarios 26 фев 2022, 18:12, всего редактировалось 1 раз.


Если так принято, то вот
Дом:
x86, C52iG, RB911G, RB951G, RB951Ui, RBD52G, RB952Ui, RB941, Woobm-USB

На работе:
RB3011UiAS, RB951G
Аватара пользователя
Gatarios
Сообщения: 11
Зарегистрирован: 23 фев 2022, 17:41
Откуда: Хабаровск
Контактная информация:

И запихав эти макароны в одно условие с оператором "and" - всё равно ничего не работает


Если так принято, то вот
Дом:
x86, C52iG, RB911G, RB951G, RB951Ui, RBD52G, RB952Ui, RB941, Woobm-USB

На работе:
RB3011UiAS, RB951G
Аватара пользователя
Gatarios
Сообщения: 11
Зарегистрирован: 23 фев 2022, 17:41
Откуда: Хабаровск
Контактная информация:

Кажется, я понял. Я использовал else, для действия если условие ложное, ибо когда я убрал else - условие начало работать


Если так принято, то вот
Дом:
x86, C52iG, RB911G, RB951G, RB951Ui, RBD52G, RB952Ui, RB941, Woobm-USB

На работе:
RB3011UiAS, RB951G
Аватара пользователя
Gatarios
Сообщения: 11
Зарегистрирован: 23 фев 2022, 17:41
Откуда: Хабаровск
Контактная информация:

У меня немного подгорело от осознания того, что существует правило построения кода таким образом, что необходимо писать else на той же строке, что и закрывающая скобка у "do". Я очень не привык к таким глупостям и даже слегка разочаровался в Mikrotik. Однако, может у создателей на эту фичу были какие-то причины. В любом случае, спасибо всем за помощь.

Работает:

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

if (1 = 0) do={ /system script run Bach } else={ /system script run Aha }
Работает:

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

if (1 = 0) do={ /system script run Bach } else={
/system script run Aha }
НЕ РАБОТАЕТ!:

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

if (1 = 0) do={ /system script run Bach }
else={ /system script run Aha }


Если так принято, то вот
Дом:
x86, C52iG, RB911G, RB951G, RB951Ui, RBD52G, RB952Ui, RB941, Woobm-USB

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

Gatarios писал(а): 24 фев 2022, 15:12 НЕ РАБОТАЕТ!:
КОД: ВЫДЕЛИТЬ ВСЁ

if (1 = 0) do={ /system script run Bach }
else={ /system script run Aha }
Ну да, есть там оговорка. Это происходит потому, что знаки {} заключают в себе локальную область. А перенос строки , если он произошел вне локальной области приводит в завершению команды. Муть конечно, но так уж есть. Вот так должно работать))) Это типа иллюстрации синтаксиса.

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

if (1 = 0) do={
      /system script run Bach
      } else={ 
         /system script run Aha
         }


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
Gatarios
Сообщения: 11
Зарегистрирован: 23 фев 2022, 17:41
Откуда: Хабаровск
Контактная информация:

podarok66 писал(а): 24 фев 2022, 21:16 Ну да, есть там оговорка. Это происходит потому, что знаки {} заключают в себе локальную область. А перенос строки , если он произошел вне локальной области приводит в завершению команды. Муть конечно, но так уж есть
Спасибо.

Кстати, вот весь код, если кому интересно будет:

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

if (([/ping *ip компа* count=8] = 0) and ([/interface wireless registration-table find mac-address=*мак телефона*] != "")) do={
/tool wol interface=*любой интерфейс с компом* mac=*мак компа*
}
Создаётся в планировщике, дабы не перезапускать скрипты вручную после перезагрузки роутера


Если так принято, то вот
Дом:
x86, C52iG, RB911G, RB951G, RB951Ui, RBD52G, RB952Ui, RB941, Woobm-USB

На работе:
RB3011UiAS, RB951G
iAHTOH
Сообщения: 8
Зарегистрирован: 15 апр 2021, 15:24
Откуда: Казань
Контактная информация:

Я вот тут PoE включаю. Без пингов.
Может попробуете также WOL оживить?


Аватара пользователя
Gatarios
Сообщения: 11
Зарегистрирован: 23 фев 2022, 17:41
Откуда: Хабаровск
Контактная информация:

iAHTOH писал(а): 11 апр 2022, 23:06 Я вот тут PoE включаю. Без пингов.
Может попробуете также WOL оживить?
Спасибо. Полезно)


Если так принято, то вот
Дом:
x86, C52iG, RB911G, RB951G, RB951Ui, RBD52G, RB952Ui, RB941, Woobm-USB

На работе:
RB3011UiAS, RB951G
Ответить