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

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

От себя добавлю, что наш скромный drPioneer поставил себя на последнее место среди авторов, но я должен сказать, что именно он был и является главным создателем скрипта, объединившего в себе вышеуказанные функции. Мне было приятно сотрудничество с drPioneer, благодаря которому мы познакомились ближе. Вполне возможно, что несмотря на кажущуюся завершённость, в будущем могут появиться новые версии скрипта.

Вот статья про TLGRM на Хабре:
https://habr.com/ru/post/650563/

Скрипт также размещён на англоязычном форуме Микротик:
https://forum.mikrotik.com/viewtopic.php?t=183080


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
goryn
Сообщения: 4
Зарегистрирован: 16 фев 2022, 14:49

Добрый день!
ROS 7.1.2, новичок.
Но у меня скрипт заработал только после того как убрал минус перед своим ChatID и \ в вызове урла после sendmessage.


comsorg
Сообщения: 2
Зарегистрирован: 22 фев 2022, 12:04

Приветствую!
Столкнулся с такой проблемой, при отправке любой команды роутеру, получаю ответ
Telegram user 'unknown' is trying to execute command
. В чем может быть проблема?
Версия RouterOS 7.1.2


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

comsorg писал(а): 22 фев 2022, 12:14 Приветствую!
Столкнулся с такой проблемой, при отправке любой команды роутеру, получаю ответ
Telegram user 'unknown' is trying to execute command
. В чем может быть проблема?
Версия RouterOS 7.1.2
Добрый день.

Заполните "Имя пользователя" в настройках своего месенджера.
Сформируйте команду в формате: '/имя_роутера команда' или '/forall команда'.
Отпишите о результате.


comsorg
Сообщения: 2
Зарегистрирован: 22 фев 2022, 12:04

1.
Заполните "Имя пользователя" в настройках своего месенджера.
«Имя пользователя» заполнил, результат тот же

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

MikroTik:
>16:47:02 Telegram user 'unknown' activates script 'telega_test'. 
Очень странное поведение.
Если напрямую запросить "username" - отдается.
А если использовать "first_name"?

2.
Сформируйте команду в формате: '/имя_роутера команда' или '/forall команда'.

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

/MikroTik print

MikroTik:
>16:48:02 Telegram user 'unknown' is trying to execute command 'print'.


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

Добрый день.
comsorg писал(а): 22 фев 2022, 17:00 «Имя пользователя» заполнил, результат тот же

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

MikroTik:
>16:47:02 Telegram user 'unknown' activates script 'telega_test'. 
Очень странное поведение.
Если напрямую запросить "username" - отдается.
А если использовать "first_name"?
Проведено исследование указанного вопроса.
В данном конкретном случае выяснилось, что для правильного отображения имени отправителя должны быть выполнены следующие условия:
  • Заполнена графа "Имя пользователя" в настройках мессенджера
  • Бот должен быть подключен к ГРУППЕ, а не к КАНАЛУ Телеграм.
Надеюсь, эта информация поможет кому-то в дальнейшем...


Аватара пользователя
KAPRANOV
Сообщения: 6
Зарегистрирован: 18 фев 2022, 15:25

Подскажите пожалуйста, как отключить отчет о выполнении скрипта в чате но оставить в логе:

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

MikroTik: 
>00:00:00 Telegram user "Username" activates script "Scriptname".


saintman
Сообщения: 1
Зарегистрирован: 25 апр 2022, 12:05

Добрый день
скрипт опробовал вчера, работает, запускает команды и скрипты - огромный вам респект!

нашел единственное, что он не запускает - бэкап на email через скрипт - если у скрипта бэкапа права как по умолчанию (все галки) - в логах ругается что недостаточно прав на запуск, если убирать права оставляя только read, write, policy,test - скрипт не работает тк видимо недостаточно прав
уже разные комбинации пробовал - если убирать права на скрипт - не запускается локально
если добавить права - не запускается из тг )
не критично в принципе, но интересно почему так

сам скрипт бэкапа под спойлером
 
add dont-require-permissions=no name=Backup owner=user policy=ftp,reboot,read,write,policy,test,password,sniff,sensitive,romon source="{\r\
\n\r\
\n\r\
\n:local smtpserv \"smtp.gmail.com\";\r\
\n\r\
\n:local EaccountFrom \"account\";\r\
\n\r\
\n:local EaccountTo \"account\";\r\
\n:local pass \"password\";\r\
\n\r\
\n\r\
\n\r\
\n:log info \"Executing of backup script started\";\r\
\n:local sysname [/system identity get name];\r\
\n:local sysver [/system package get system version];\r\
\n/ip dns cache flush;\r\
\n:delay 2;\r\
\n:log info \"DNS cache flushed\";\r\
\n:foreach i in=[/file find] do={:if ([:typeof [:find [/file get \$i name] \"\$sysname-backup-\"]]!=\"nil\") do={/file remove \$i}};\r\
\n:delay 2;\r\
\n:log info \"Last backup and export files deleted\";\r\
\n\r\
\n\t\r\
\n\r\
\n:local backupfile (\"\$sysname-backup-\" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . \".backup\");\r\
\n/system backup save name=\$backupfile;\r\
\n:delay 5;\r\
\n:log info \"Backup file created\";\r\
\n:local exportfile (\"\$sysname-backup-\" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . \".rsc\");\r\
\n/export file=\$exportfile;\r\
\n:delay 5;\r\
\n:log info \"Export file created\";\r\
\n:local files {\$backupfile;\$exportfile};\r\
\n/tool e-mail send from=\$EaccountFrom to=\$EaccountTo server=\$smtpserv port=25 user=\$EaccountFrom password=\$pass start-tls=yes \\\r\
\n\tfile=\$files subject=(\"\$sysname Setup Script Backup (\" . [/system clock get date] . \")\") \\\r\
\n\tbody=(\"\$sysname Backup files see in attachment. RouterOS version: \$sysver\");\r\
\n:delay 5;\r\
\n:log info \"Backup and export files sent to email successfully\";\r\
\n:log info \"Executing of backup script finished\";\r\
\n}"


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

Здравствуйте.
saintman писал(а): 25 апр 2022, 12:22 ...
нашел единственное, что он не запускает - бэкап на email через скрипт - если у скрипта бэкапа права как по умолчанию (все галки) - в логах ругается что недостаточно прав на запуск, если убирать права оставляя только read, write, policy,test - скрипт не работает тк видимо недостаточно прав уже разные комбинации пробовал - если убирать права на скрипт - не запускается локально
если добавить права - не запускается из тг )
не критично в принципе, но интересно почему так
Провёл эксперимент: запустил представленный Вами скрипт на первом, попавшемся мне под руку Микротике.
Скрипт, предварительно привел в удобоваримый вид и закоментировал строку отправки е-мэйл, т.к. нет желания заморачиваться настройкой:

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



:local smtpserv "smtp.gmail.com";
:local EaccountFrom "account";
:local EaccountTo "account";
:local pass "password";
:log info "Executing of backup script started";
:local sysname [/system identity get name];
:local sysver [/system package get system version];
/ip dns cache flush;
:delay 2;
:log info "DNS cache flushed";
:foreach i in=[/file find] do={:if ([:typeof [:find [/file get $i name] "$sysname-backup-"]]!="nil") do={/file remove $i}};
:delay 2;
:log info "Last backup and export files deleted";
:local backupfile ("$sysname-backup-" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".backup");
/system backup save name=$backupfile;
:delay 5;
:log info "Backup file created";
:local exportfile ("$sysname-backup-" . [:pick [/system clock get date] 7 11] . [:pick [/system clock get date] 0 3] . [:pick [/system clock get date] 4 6] . ".rsc");
/export file=$exportfile;
:delay 5;
:log info "Export file created";
:local files {$backupfile;$exportfile};
#/tool e-mail send from=$EaccountFrom to=$EaccountTo server=$smtpserv port=25 user=$EaccountFrom password=$pass start-tls=yes file=$files subject=("$sysname Setup Script Backup (" . [/system clock get date] . ")") body=("$sysname Backup files see in attachment. RouterOS version: $sysver");
:delay 5;
:log info "Backup and export files sent to email successfully";
:log info "Executing of backup script finished";


Запуск скрипта из TLGRM проходит без каких-либо проблем -> в LOGе появляются соответствующие записи.


aLEXXOiD
Сообщения: 2
Зарегистрирован: 25 апр 2022, 22:23

Добрый день, помогите с настройкой скрипта.... все сделал по инструкциям: создал бота, добавил в чат. Но когда я пишу ему сообщение-команду, то все отрабатывает правильно, когда пишет в чат сам бот - сообщения не приходят.
Скрипт выдает в консоли: "Recipient of the Telegram message: 'unknown' '"

Такое ощущение что скрипт не может выбрать все сообщения из чата.
У меня на другой системе срабатывает скрипт и в телегу пишется ключевое сообщение, хочу чтобы его отработал скрипт в mikrotik, но что-то не выходит...

update:
как пишет гугл - в телеграмме боты не могут писать друг другу. В связи с чем возникает вопрос, как в скрипт в mikrotik передать информацию, которую пишет в телегу другой бот?


Ответить