Страница 13 из 14

Re: Удаленный запуск скриптов через Телеграм

Добавлено: 04 дек 2023, 11:33
Sertik
Вот так Вы можете передать параметры из одного скрипта в другой (без функций):

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

:local scrName "scriptX"
:local Var1 "Par1=parametr1"
:local Var2 "Par2=12"

:execute script="[[:parse \"[:parse [/system script get $scrName source]] $Var1 $Var2\"]]"
Но учтите, что так текст в кириллице передать нельзя (только в HEX-формате возможно, не пробовал)
Числовые параметры преобразуются в строковые и нужно их преобразовывать обратно:

scriptX:

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

:log warning "$Par1 $Par2"
:log warning [:typeof $Par1]
:log warning [:typeof $Par2]
:local Par3 [:tonum $Par2]
:log error $Par3
:log error [:typeof $Par3]

Re: Удаленный запуск скриптов через Телеграм

Добавлено: 04 дек 2023, 13:57
Savanna
Sertik писал(а): 04 дек 2023, 11:33 Вот так Вы можете передать параметры из одного скрипта в другой
Спасибо, Sertik. Только с вашей помощью удалось запилить скрипт для смены IP сервера Wireguard командой из Телеграм. Приведу здесь решение этой задачи на случай, если кому-то тоже понадобиться.

Итак, в мегаскрипте управления из этой темы ничего менять не надо. Достаточно из Телеграм послать такую команду:

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

/myrouter setvpsip 162.232.234.56
Эта команда выполнит на Микротике с названием "myrouter" скрипт с названием "setvpsip", аргументом которого будет "162.232.234.56".

А вот код скрипта "setvpsip", который меняет айпишник сервера в настройках Wireguard клиента:

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

:local vpsip $0;
:local peercomment "wireguard_server"
:if ([interface wireguard peers get number=[find comment=$peercomment] value-name=endpoint-address] != $vpsip) do={
    interface wireguard peers set number=[find comment=$peercomment] endpoint-address=$vpsip
}
В коде сначала записываем значение входящего аргумента в переменную vpsip. Затем проверяем, не совпадает ли старый IP адрес сервера с новым. Если нет, устанавливаем новый адрес. Обратите внимание, что нужный сервер, адрес которого меняем, ищется по его комментарию (т.е. при создании peer для wireguard клинта обязательно нужно заполнить поле Comment).

Все выше описанное у меня отлично работает на RouterOS 7.12.1

Re: Удаленный запуск скриптов через Телеграм

Добавлено: 04 дек 2023, 14:30
Sertik
Вам тоже спасибо. Вы мне подали идею о том, что можно передавать позиционные параметры скрипту, типа $0.
Вроде раньше пробовал - не работало. Надо поэкспериментировать ещё.

Re: Удаленный запуск скриптов через Телеграм

Добавлено: 04 дек 2023, 15:50
-13-
Savanna писал(а): 04 дек 2023, 13:57
Sertik писал(а): 04 дек 2023, 11:33 Вот так Вы можете передать параметры из одного скрипта в другой
Спасибо, Sertik. Только с вашей помощью удалось запилить скрипт для смены IP сервера Wireguard командой из Телеграм. Приведу здесь решение этой задачи на случай, если кому-то тоже понадобиться.

Итак, в мегаскрипте управления из этой темы ничего менять не надо. Достаточно из Телеграм послать такую команду:

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

/myrouter setvpsip 162.232.234.56
Эта команда выполнит на Микротике с названием "myrouter" скрипт с названием "setvpsip", аргументом которого будет "162.232.234.56".

А вот код скрипта "setvpsip", который меняет айпишник сервера в настройках Wireguard клиента:

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

:local vpsip $0;
:local peercomment "wireguard_server"
:if ([interface wireguard peers get number=[find comment=$peercomment] value-name=endpoint-address] != $vpsip) do={
    interface wireguard peers set number=[find comment=$peercomment] endpoint-address=$vpsip
}
В коде сначала записываем значение входящего аргумента в переменную vpsip. Затем проверяем, не совпадает ли старый IP адрес сервера с новым. Если нет, устанавливаем новый адрес. Обратите внимание, что нужный сервер, адрес которого меняем, ищется по его комментарию (т.е. при создании peer для wireguard клинта обязательно нужно заполнить поле Comment).

Все выше описанное у меня отлично работает на RouterOS 7.12.1
Раньше тоже развлекался сменой IP, но когда устройств много, проще DDNS использовать, и там уже по api менять IP
не реклама
 DDNS

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

:set $apiUsername "xxxxxxXXXXXX"
:set $apiSecret "*************"
:set $hostname "****.ydns.eu"
:set $urlUpd "https://ydns.io/api/v1/update/?host=$hostname&ip=$cuISP1"

:retry {
    :if ([/tool fetch user=$apiUsername password=$apiSecret mode=https url=$urlUpd as-value output=none]->"status" = "finished") do={
        :resolve $hostname
    }
} delay=20 on-error={}
$cuISP1 беру из другого скрипта, который смотрит, менялось ли значение IP от провайдера

Re: Удаленный запуск скриптов через Телеграм

Добавлено: 19 дек 2023, 16:42
cocainus
Всем привет, при каждой отработке скрипта, вот такая строка в логе:

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

Download from https://api.telegram.org/botXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_inp3D_to/getUpdates?offset=-1&limit=1&allowed_updates=message to RAM FINISHED
Я так понимаю, это что-то с проверкой сертификата удаленного сервера при скачивании файла скриптом. Не пойму пока как с эти разобраться. Может кто-нибудь знает?
При этом скрипт работает все нормально, но спамит в лог, скриншот ниже:.

Версия ROS 7.13

Изображение

Re: Удаленный запуск скриптов через Телеграм

Добавлено: 20 дек 2023, 00:18
SergeyKRG
cocainus писал(а): 19 дек 2023, 16:42 Всем привет, при каждой отработке скрипта, вот такая строка в логе:

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

Download from https://api.telegram.org/botXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_inp3D_to/getUpdates?offset=-1&limit=1&allowed_updates=message to RAM FINISHED
Я так понимаю, это что-то с проверкой сертификата удаленного сервера при скачивании файла скриптом. Не пойму пока как с эти разобраться. Может кто-нибудь знает?
При этом скрипт работает все нормально, но спамит в лог, скриншот ниже:.

Версия ROS 7.13

Изображение
Тоже решил сегодня обновить и получил тоже самое на 7,12 было все тихо.

Re: Удаленный запуск скриптов через Телеграм

Добавлено: 20 дек 2023, 10:17
Sertik
Эта команда никакой файл не скачивает, а запрашивает update у Телеграмм. Не пробовал на 7-ке вообще, работаю на 6 версии, всё ок
=message to RAM FINISHED

Re: Удаленный запуск скриптов через Телеграм

Добавлено: 20 дек 2023, 10:38
SergeyKRG
Еще вот такая ошибка появилась на 7.13
10:36:38 WARNING: frequency out of range: 0.001552. MAX: 0.000500

Пойду нетинстал проьовать изучить)

Re: Удаленный запуск скриптов через Телеграм

Добавлено: 20 дек 2023, 13:49
drpioneer
SergeyKRG писал(а): 20 дек 2023, 00:18
cocainus писал(а): 19 дек 2023, 16:42 Всем привет, при каждой отработке скрипта, вот такая строка в логе:

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

Download from https://api.telegram.org/botXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX_inp3D_to/getUpdates?offset=-1&limit=1&allowed_updates=message to RAM FINISHED
Тоже решил сегодня обновить и получил тоже самое на 7,12 было все тихо.
Глядя на приложенный скриншот, видно, что это отладочная информация.
По всей видимости разработчики ROS7.13 решили включить вывод этой информации в журнал.
Кстати, на официальном форуме тоже упоминается подобное сообщение в журнале устройства после перехода на ROS7.13

Re: Удаленный запуск скриптов через Телеграм

Добавлено: 20 дек 2023, 14:09
-13-
Добавили в логи в ROS 7.13
*) log - added "fetch" topic;
просто исключить из логов