Проверка IP LTE-интерфейса и отправка его на ddns

Автоматизация при помощи встроенного скриптового языка и RouterOS API
Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 04 окт 2018, 14:58

имеете ввиду эту? - http://192.168.25.1/html/home.html тут все нормально - корректно отображается
как-то странно через раз. Более корректно страница http://192.168.25.1/api/monitoring/status отображается в IE v.11 - http://file.sampo.ru/t2rj94/ интересно понять причину появления ошибок. Ошибка пропадает, если предварительно зайти на главную страницу или вообще просто на http://192.168.25.1/ - хотя тоже через раз. Есть программка "API+HiLink", которая отрабатывает корректно, правда она настроена на дефолтный адрес 192.168.8.1 - http://file.sampo.ru/28d4j5/,
нашел тут - http://4pda.ru/forum/index.php?showtopi ... ry45767985

Аватара пользователя
Chupaka
Сообщения: 1352
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 04 окт 2018, 19:02

Ну, значит, дёргаете главную, потом API, opentag "<WanIPAddress>", closetag "</WanIPAddress>" - и вот уже скрипт вытянул WAN Address :)

Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 04 окт 2018, 20:23

Дергать главную придется вручную? Как-то можно это вмонтировать в скрипт, чтобы автоматом, что то вроде сначала -
:local result [//tool fetch url="http://192.168.25.1/index.html" mode=http];
потом - :local result [/tool fetch url="http://192.168.25.1/api/monitoring/status" as-value output=user];
Ещё нашел - для того чтобы скрипт ошибку не выдавал, нужно в сторону curl смотреть, может так - /tool fetch сurl=..?
И далее, скрипт вытаскивает IP, как ему передать его в скрипт отправки на ddns? К примеру вот в этот - http://file.sampo.ru/vdsg2q/
Возможность прятать длинный текст под спойлер не вижу, поэтому текстовыми файликами скидываю.
И да, простите если утомил...

Аватара пользователя
Chupaka
Сообщения: 1352
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 05 окт 2018, 00:43

Длинный текст скрипта отлично прячется в теги [code]

В том скрипте адрес определяется в строке ":local ddnsip [ /ip address get [/ip address find interface=$ddnsinterface ] address ]" — вот сюда и надо вставить результат работы скрипта выше.

/tool fetch curl? Где вы про такое прочитали?

Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 05 окт 2018, 06:50

пока ничего в логах не вижу, страничка api в файл не выгружается, при попытке в терминале загружать странички последовательно, в файле "status" все та же ошибка - 125002. Чтобы избавиться от неё предлагают, как я предполагал, использовать "правильные" куки с первоначальным открытием главной страницы - https://vxlabs.com/stats-for-huawei-lte-routers/. Похоже микротик не может их обработать или получить, в отличие от браузеров. Или, как вариант, забирать ID со страницы - http://192.168.25.1/api/webserver/SesTokInfo и уже потом с ним заходить на страницу status - http://4pda.ru/forum/index.php?showtopi ... ry71117849
В общем, пока затык на ошибке 125002.
Правильно понимаю - должно в списке файлов появиться 2 файла - 1 - данные со статусом, 2 - после отработки скрипта с IP адресом?
пока скрипт имеет вид примерно такой -

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

{
:local result [/tool fetch url="http://192.168.25.1/html/home.html" keep-result=no];
:local result [/tool fetch url="http://192.168.25.1/api/monitoring/status" as-value output=user];
:if ($result->"status" = "finished") do={
:local data $result->"data";
:local opentag ""<WanIPAddress>";
:local closetag "</WanIPAddress>";
:put [:pick $data ([:find $data $opentag] + [:len $opentag]) [:find $data $closetag]]
}
}

Аватара пользователя
Chupaka
Сообщения: 1352
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 05 окт 2018, 11:52

Судя по 4pda, токен надо пихать в заголовки запроса. RouterOS ни так, ни в куки не умеет, увы.

P.S. keep-result=no говорит, что файл сохранять не надо, поэтому по первой команде он не появится на роутере.

Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 05 окт 2018, 12:02

Я решил "отложить бубен и перестать танцевать". Ситуация в моем случае мало кому пригодиться, при прямом доступе в интернет через модем HiLink, пользователи просто прикрутят скрипт ddns к LTE-интерфейсу. В моем же случае можно взять Caller ID vpn-клиента,в поднятом туннеле через необходимый LTE-интерфейс HiLink модема, на VPN-сервере. Если не трудно, поправьте пожалуйста синтаксис в скрипте ddns, который приводил немного выше. Пока он отправляет локальный IP сервера к которому клиент подключается. Думаю куда корректно поставить переменную $"caller-id".

Аватара пользователя
Chupaka
Сообщения: 1352
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 05 окт 2018, 12:09

Chupaka писал(а):
05 окт 2018, 00:43
В том скрипте адрес определяется в строке ":local ddnsip [ /ip address get [/ip address find interface=$ddnsinterface ] address ]" — вот сюда и надо вставить результат работы скрипта выше.
Ну, либо caller-id :)

Vita077
Сообщения: 33
Зарегистрирован: 28 сен 2018, 12:38

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Vita077 » 05 окт 2018, 12:15

а можно явным образом готовую строчку написать? Простите, я что-то запутался...

Аватара пользователя
Chupaka
Сообщения: 1352
Зарегистрирован: 29 фев 2016, 15:26
Откуда: Минск
Контактная информация:

Re: Проверка IP LTE-интерфейса и отправка его на ddns

Сообщение Chupaka » 05 окт 2018, 13:07

:local ddnsip "$"caller-id""; - как-то так, видимо :)

Ответить