Страница 1 из 1
Скрипт для WoL, если телефон в сети. (Решено)
Добавлено: 23 фев 2022, 18:14
Gatarios
Добрый день.
Хочу организовать запуск компьютера при подключении телефона к роутеру, и так, чтобы происходило это не всегда, а только когда компьютер выключен. Пока получилось только запускать скриптом компьютер и определять наличие телефона в подключениях, и вместе они работают, однако при добавлении условия на проверку включен ли компьютер - всё сломалось. Скрипт просто не выполняется. Перерыл десятки сайтов, форумов и тем, попробовал различные написания ping и его параметры, но подвоха так и не нашёл. Подскажите, пожалуйста, что не так с условием.
Сам скрипт:
Код: Выделить всё
if ([/ping 192.168.0.2 count=4]=0) do={
if ([/interface wireless registration-table find mac-address=*мак адрес телефона*] != "") do={
/tool wol interface=*интерфейс* mac=*мак адрес компьютера*
}
}
Re: Скрипт для WoL, если телефон в сети. Прошу помощи.
Добавлено: 24 фев 2022, 12:51
Gatarios
И запихав эти макароны в одно условие с оператором "and" - всё равно ничего не работает
Re: Скрипт для WoL, если телефон в сети. Прошу помощи.
Добавлено: 24 фев 2022, 15:04
Gatarios
Кажется, я понял. Я использовал else, для действия если условие ложное, ибо когда я убрал else - условие начало работать
Re: Скрипт для WoL, если телефон в сети. Прошу помощи.
Добавлено: 24 фев 2022, 15:12
Gatarios
У меня немного подгорело от осознания того, что существует правило построения кода таким образом, что необходимо писать 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 }
Re: Скрипт для WoL, если телефон в сети. Прошу помощи.
Добавлено: 24 фев 2022, 21:16
podarok66
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
}
Re: Скрипт для WoL, если телефон в сети. Прошу помощи.
Добавлено: 26 фев 2022, 18:11
Gatarios
podarok66 писал(а): ↑24 фев 2022, 21:16
Ну да, есть там оговорка. Это происходит потому, что знаки {} заключают в себе локальную область. А перенос строки , если он произошел вне локальной области приводит в завершению команды. Муть конечно, но так уж есть
Спасибо.
Кстати, вот весь код, если кому интересно будет:
Код: Выделить всё
if (([/ping *ip компа* count=8] = 0) and ([/interface wireless registration-table find mac-address=*мак телефона*] != "")) do={
/tool wol interface=*любой интерфейс с компом* mac=*мак компа*
}
Создаётся в планировщике, дабы не перезапускать скрипты вручную после перезагрузки роутера
Re: Скрипт для WoL, если телефон в сети. (Решено)
Добавлено: 11 апр 2022, 23:06
iAHTOH
Я вот
тут PoE включаю. Без пингов.
Может попробуете также WOL оживить?
Re: Скрипт для WoL, если телефон в сети. (Решено)
Добавлено: 30 июл 2022, 16:23
Gatarios
iAHTOH писал(а): ↑11 апр 2022, 23:06
Я вот
тут PoE включаю. Без пингов.
Может попробуете также WOL оживить?
Спасибо. Полезно)