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

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

Вот так Вы можете передать параметры из одного скрипта в другой (без функций):

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

: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]


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Savanna
Сообщения: 6
Зарегистрирован: 04 дек 2023, 07:30

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
Последний раз редактировалось Savanna 04 дек 2023, 14:52, всего редактировалось 1 раз.


Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

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


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
-13-
Сообщения: 125
Зарегистрирован: 18 мар 2021, 12:45

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 от провайдера


cocainus
Сообщения: 2
Зарегистрирован: 07 мар 2019, 20:09

Всем привет, при каждой отработке скрипта, вот такая строка в логе:

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

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

Версия ROS 7.13

Изображение


SergeyKRG
Сообщения: 5
Зарегистрирован: 14 авг 2023, 09:01

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 было все тихо.


Sertik
Сообщения: 1601
Зарегистрирован: 15 сен 2017, 09:03

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


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
SergeyKRG
Сообщения: 5
Зарегистрирован: 14 авг 2023, 09:01

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

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


Аватара пользователя
drpioneer
Сообщения: 148
Зарегистрирован: 30 май 2013, 10:20

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
Последний раз редактировалось drpioneer 20 дек 2023, 14:11, всего редактировалось 1 раз.


-13-
Сообщения: 125
Зарегистрирован: 18 мар 2021, 12:45

Добавили в логи в ROS 7.13
*) log - added "fetch" topic;
просто исключить из логов


Ответить