On-start скрипт выбора WI-FI, прошу помощи.

Раздел для тех, кто начинает знакомиться с MikroTik
Правила форума
Как правильно оформить вопрос.
Прежде чем начать настройку роутера, представьте, как это работает. Попробуйте почитать статьи об устройстве интернет-сетей. Убедитесь, что всё, что Вы задумали выполнимо вообще и на данном оборудовании в частности.
Не нужно изначально строить Наполеоновских планов. Попробуйте настроить простейшую конфигурацию, а усложнения добавлять в случае успеха постепенно.
Пожалуйста, не игнорируйте правила русского языка. Отсутствие знаков препинания и неграмотность автора топика для многих гуру достаточный повод проигнорировать топик вообще.

1. Назовите технологию подключения (динамический DHCP, L2TP, PPTP или что-то иное)
2. Изучите темку "Действия до настройки роутера".
viewtopic.php?f=15&t=2083
3. Настройте согласно выбранного Вами мануала
4. Дочитайте мануал до конца и без пропусков, в 70% случаев люди просто не до конца читают статью и пропускают важные моменты.
5. Если не получается, в Winbox открываем терминал и вбиваем там /export hide-sensitive. Результат в топик под кат, интимные подробности типа личных IP изменить на другие, пароль забить звездочками.
6. Нарисуйте Вашу сеть, рисунок (схему) сюда. На словах может быть одно, в действительности другое.
xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

Yaroslav.Cherkunov писал(а): 08 ноя 2019, 20:29 а) трудозатраты на перепрошивку устройства выше, чем в скриптовом варианте
Трудозатраты на то, чтобы перепрошить ESP8266 добавив одну строчку кода (образно wait(10);) больше, чем трудозатраты на то, чтобы написать скрипт, который вы не знаете, как написать? :co_ol:


Telegram: @thexvo
Yaroslav.Cherkunov
Сообщения: 9
Зарегистрирован: 09 окт 2019, 00:03

xvo писал(а): 08 ноя 2019, 23:20
Yaroslav.Cherkunov писал(а): 08 ноя 2019, 20:29 а) трудозатраты на перепрошивку устройства выше, чем в скриптовом варианте
Трудозатраты на то, чтобы перепрошить ESP8266 добавив одну строчку кода (образно wait(10);) больше, чем трудозатраты на то, чтобы написать скрипт, который вы не знаете, как написать? :co_ol:
Вам не пришло в голову, что трудозатраты могут складываться не только из написания строки кода в среде и клацания "отправить на устройство", а например из необходимости демонтировать устройство в труднодоступном месте, разобрать, удалить заливку компаундом и тд.
Я, заметьте, не претендую на отсутствие ошибок и наличие в логике работы устройства косяков.
В абсолюте проще изготовить новое устройство с поправками, чем вносить коррективы в имеющееся.
Такая данность в условии задачи.
Если вы приходите на форум с безграничным багажом знаний и вам никогда не приходилось сталкиваться с чем-то новым, - я рад за вас.
Но, судя по отсутствию хоть каких-то предложений по теме, радоваться за вас не стоит.


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

Yaroslav.Cherkunov писал(а): 09 ноя 2019, 00:59 Вам не пришло в голову, что трудозатраты могут складываться не только из написания строки кода в среде и клацания "отправить на устройство", а например из необходимости демонтировать устройство в труднодоступном месте, разобрать, удалить заливку компаундом и тд.
Приходило. И?

Я вот одного не понимаю, если вам настолько очевидно, что написать скрипт проще, что же вас остановило, с вашими то рассуждениями про багаж?
Только вам уже сколько человек сказало, что вы ерундой заняты? 4? 5?
И все тоже с багажом.
Пишите свой скрипт.
Или тут на форуме раздел есть с платными услугами.
А в итоге может получиться, что дешевле таки разобрать, удалить, подпаяться, вот это вот все.
Или да, новое сделать. С учетом работы над ошибками.

А тому человеку, кто вам компаундом залил плату без вывода сериала, ну памятник ему поставьте, что ли. На сэкономленные на "трудозатратах" средства.


Telegram: @thexvo
Yaroslav.Cherkunov
Сообщения: 9
Зарегистрирован: 09 окт 2019, 00:03

xvo писал(а): 09 ноя 2019, 01:33
Yaroslav.Cherkunov писал(а): 09 ноя 2019, 00:59 Вам не пришло в голову, что трудозатраты могут складываться не только из написания строки кода в среде и клацания "отправить на устройство", а например из необходимости демонтировать устройство в труднодоступном месте, разобрать, удалить заливку компаундом и тд.
Приходило. И?

Я вот одного не понимаю, если вам настолько очевидно, что написать скрипт проще, что же вас остановило, с вашими то рассуждениями про багаж?
Ну почему же вы считаете, что меня что-то остановило и скрипт не написан до сих пор?
Отсутствие слезных воплей "ах, ответьте же кто-нибудь"?
xvo писал(а): 09 ноя 2019, 01:33 Только вам уже сколько человек сказало, что вы ерундой заняты? 4? 5?
И все тоже с багажом.
Пишите свой скрипт.
Или тут на форуме раздел есть с платными услугами.
Мы вам обязательно перезвоним (с)
xvo писал(а): 09 ноя 2019, 01:33 А в итоге может получиться, что дешевле таки разобрать, удалить, подпаяться, вот это вот все.
Или да, новое сделать. С учетом работы над ошибками."трудозатратах" средства.
Судя по неуверенности ваших предположений, вы решения задачи не знаете, верно?
xvo писал(а): 09 ноя 2019, 01:33 А тому человеку, кто вам компаундом залил плату без вывода сериала, ну памятник ему поставьте, что ли. На сэкономленные на "трудозатратах" средства.
Да, это входит в мои планы. Собственно ожидая возможность подобных высказываний я заранее написал что ошибки есть и они уже вполне осознаны. Чего и вам искренне желаю. Осознавать, учиться и делиться.


xvo
Сообщения: 4204
Зарегистрирован: 25 фев 2018, 22:41
Откуда: Москва

Ну вот и славненько.


Telegram: @thexvo
Yaroslav.Cherkunov
Сообщения: 9
Зарегистрирован: 09 окт 2019, 00:03

podarok66 писал(а): 08 ноя 2019, 22:54 Спасибо за разъяснение, стало немного понятнее. Вот смотрите конструкцию. У вас для получения адреса от "некого устройства" должен быть включен DHCP-client. Он подвязан к какому-то интерфейсу, скорее всего wlan1. После рестарта Микротика через пару минут должен стартовать скрипт с такой вот логикой. Начинку можно написать какую душа просит. Нам логику понять сначала:

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

{:if ([/ip address get [find interface=wlan1] address ] ~ "10.202.*") do={:put "Yes!"} else={:put "No!"}}
Скрипт положительно реагирует на любой адрес, полученный в диапазоне 10.202.0.0/16 При обнаружении адреса будут инициированы команды, которые вы дадите вместо секции :put "Yes!"
Я верно понял ваши вопросы?
Спасибо за участие :-):
Задача в общем-то решена в день первого поста.
Реализацию требуемого по моему мнению оказалось проще выполнить на ведомом микротике (941).
Непосредственно перед отключением питания (а оно внезапное и непрогнозируемое) микротик находится в режиме station bridge.
DHCP-Client включен
wlan интерфейс подключен к домашней сети с соответствующим профилем безопасности.
Соответственно после перезагрузки этот статус восстанавливается.
скриптом выполняются следующие действия (пишу по памяти, в синтаксисе наверняка ошибки и команды не полные):

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

:local DeviceSSID "WiFi_1"
:local HomeSSID "WiFi_Main"
:local PassWiFi "password"

/ip dhcp-client disable;
/interface wireless set [ find default-name=wlan1 ] disabled=yes;
/interface wireless security-profiles set [ find default=yes ] mode=none; #в микротике заведено два профиля безопасности - пустой default и home_security c паролем, WPA2 PSK и прочим. 
/interface wireless set [ find default-name=wlan1 ] disabled=no ssid=$DeviceSSID;
/ip address set address=192.168.4.2/24  interface=bridge1 netmask=192.168.4.0 network=192.168.4.1;
/ip route add gateway=bridge1 dat-addr=192.168.4.1; #пришлось добавить статический ip и route, тк от устройства адрес микрот по dhcp получить не может
/tool fetch url="http://192.168.4.1/restart\?device=ok"; #команда на перезагрузку устройства
:delay 3;
#дальше подключение к домашней сети - гасится текущий wlan
#выбирается профиль безопасности home_security
#включается wlan c ssid=HomeSSID
#включается DHCP-client
/interface wireless set [ find default-name=wlan1 ] disabled=yes;
/interface wireless security-profiles set [ find home_security=yes ] mode=dynamic-keys wpa-pre-shared-key=$PassWiFi wpa2-pre-shared-key=$PassWiFi;
/interface wireless set [ find default-name=wlan1 ] disabled=no ssid=$HomeSSID;
/ip dhcp-client enable;
Примерно так в общих чертах. Пересыпано строками для логгирования и прочей мишурой. Возможно что-то забыл.
Если это рукоделие кому-то нужно, - могу при доступе к сети слить скрипт.


mafijs
Сообщения: 536
Зарегистрирован: 03 сен 2017, 03:08
Откуда: Marienburga

Yaroslav.Cherkunov писал(а): 09 ноя 2019, 02:11 Непосредственно перед отключением питания (а оно внезапное и непрогнозируемое)
Запитать микротик от UPS или мoжно даже с mUPS ( https://mikrotik.com/product/mups) и проблемы бы не было.


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

Ну что же, я рад, что у вас всё получилось. Вы уж не обращайте внимание на наших ребят. Просто на форуме у новичков тенденция чрезмерно дозировать сведения. Что в итоге приводит к раздутию любой новой темы до нескольких страниц, хотя вопрос решается парой фраз. Вот все и агрессивничают немного.
Ваш скрипт я пробежал глазами. Обычный стартовый скрипт, единственное, он не учитывает вероятность, что первым загрузится Микротик, и дёргает перезагрузку вашего устройства просто потому, что произошёл ребут Микрота. А это ведёт к перезагрузками устройства даже скажем после обновления Микротика. Впрочем, решение ваше, оно вас устраивает. Спасибо, что сообщили о завершении поиска .


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Yaroslav.Cherkunov
Сообщения: 9
Зарегистрирован: 09 окт 2019, 00:03

podarok66 писал(а): 09 ноя 2019, 20:52 Ну что же, я рад, что у вас всё получилось. Вы уж не обращайте внимание на наших ребят. Просто на форуме у новичков тенденция чрезмерно дозировать сведения. Что в итоге приводит к раздутию любой новой темы до нескольких страниц, хотя вопрос решается парой фраз. Вот все и агрессивничают немного.
Вам спасибо за проявленный интерес к моему вопросу и желание помочь по теме.
podarok66 писал(а): 09 ноя 2019, 20:52 Ваш скрипт я пробежал глазами. Обычный стартовый скрипт, единственное, он не учитывает вероятность, что первым загрузится Микротик, и дёргает перезагрузку вашего устройства просто потому, что произошёл ребут Микрота. А это ведёт к перезагрузками устройства даже скажем после обновления Микротика.
Да, обычный стартовый скрипт. Без ups и перепрошивки.
Описанный вами сценарий вроде бы как учтен на уровне "а был ли вася".
Если микротик загружается первым, то устройство сможет подключиться к его сети и свою АР не поднимет. Соответственно команда на ребут устройства не пройдёт, тк к несуществующему SSID подключиться сложновато.
Аналогично с перезагрузкой микротика в случае обновления - нет поднятой АР устройства, - нет перезагрузки.
Вроде так.
Хотя, во избежание долгой загрузки в случае рестарта микротика и обработки ошибок можно добавить в начале скрипта условие проверки доступных ssid и в зависимости от наличия поднятой на устройстве АР выполнять скрипт, или просто скипать.


Ответить