управление с телеги

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Аватара пользователя
Virtue
Сообщения: 142
Зарегистрирован: 07 мар 2014, 10:17

okel писал(а): 24 окт 2021, 16:17 Скрипт по команде log_print_10 присылает ответ:
poslednih logov:
Ответ должен быть вида:
Имя микрота: 10 poslednih logov:
Это если вы запросили 10 логов
Ну а далее сами логи..
У вас даже имени не прислал? И число логов?


okel
Сообщения: 3
Зарегистрирован: 22 окт 2021, 17:41

Разобрался с логами, теперь всё присылает скрипт как надо. А причина была в следующем: команду в телеге (в шаблоне) сделал, как на первой странице, Mikrotik_log_print_10 - last logs - , а как переделал в шаблоне на
Mikrotik_log_print 10 - last logs - всё сразу заработало как надо.

А пример подсмотрел все это на второй странице.
Так что огромное спасибо за подсказки, всё работает. :-): :dan_ser:
Теперь хотелось бы как то научить тело порты отключать и включать.


Аватара пользователя
Virtue
Сообщения: 142
Зарегистрирован: 07 мар 2014, 10:17

okel писал(а): 25 окт 2021, 20:37 Разобрался с логами, теперь всё присылает скрипт как надо. А причина была в следующем:
Рад, что у вас заработало :-):

только странная причина получилась.. проверил - у меня по всякому работает

ПС: скрипт log_print обновил, теперь есть возможность смотреть не только последние логи, но и вообще все .. так что обновляйте :ni_zia:


Hunt0rr
Сообщения: 5
Зарегистрирован: 27 ноя 2017, 19:00

А как можно защитить бота от случайного его нахождения левыми людьми и соответственно получения ими доступа к командам?


Аватара пользователя
Virtue
Сообщения: 142
Зарегистрирован: 07 мар 2014, 10:17

Hunt0rr писал(а): 20 янв 2022, 09:49 А как можно защитить бота от случайного его нахождения левыми людьми и соответственно получения ими доступа к командам?
В скрипте уже есть такая защита, вы создаёте группу, в которую добавляете бота и тех, кто будет иметь доступ к командам, либо только бота, тогда доступ к командам будет только у вас.


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

Добавлю с позволения автора, модифицированный ping-script

ставим условие
 в скрипте проверяющем сообщения в телеграм
:if ($message ~"^/ping") do={:set cmd 1
:local fnPing [parse [/system script get "fnPing" source]]
$fnPing chatid=$chatid message=$message
и смотрим в
 скрипт для ping

# Name: fnPing
# Description: Ping any address (function)

:local pinghost
:local pingaddr
:local pingrtt
:local pingtx
:local pingrx

:global fnSend
:local text

## Identification pinghost
:set pinghost [pick $message 6 [len $message]]
:do {
:if ($pinghost ~ "[a-z | A-Z]") do={
:set pingaddr [resolve $pinghost]
} else={
:set pingaddr "$pinghost"
}
} on-error={
:set pingaddr $pinghost
}

## Ping address
:do {
/tool flood-ping count=4 $pingaddr do={
:set pingrtt ($"max-rtt")
:set pingtx ($"sent")
:set pingrx ($"received")
}
} on-error={
:set pingrx 0
}

## Set text for message
:if ($pingrx > 0) do={
:set text ("pong: Max " .$pingrtt. "ms from " .$pinghost. " with " .$pingrx. "/" .$pingtx)
} else={
:set text ("pong: No response from $pinghost")
}

$fnSend chatid=$chatid text=$text

# End
может что то упустил или лишнее, критикуем))


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

немного поправил, если отправить пустую команду ping, в ответ придет "impossible ping the nothing"
 
# Name: fnPing
# Description: Ping any address (function)

:local pinghost
:local pingaddr
:local pingrtt
:local pingtx
:local pingrx

:global fnSend
:local text

## Identification pinghost
:set pinghost [pick $message 6 [len $message]]
:if ([len $pinghost]=0) do={
:set text "impossible ping the nothing"
} else={
:do {
:if ($pinghost ~ "[a-z | A-Z]") do={
:set pingaddr [resolve $pinghost]
} else={
:set pingaddr "$pinghost"
}
} on-error={
:set pingaddr $pinghost
}

## Ping address
:do {
/tool flood-ping count=4 $pingaddr do={
:set pingrtt ($"max-rtt")
:set pingtx ($"sent")
:set pingrx ($"received")
}
} on-error={
:set pingrx 0
}

## Set text for message
:if ($pingrx > 0) do={
:set text ("pong: Max " .$pingrtt. "ms from " .$pinghost. " with " .$pingrx. "/" .$pingtx)
} else={
:set text ("pong: No response from $pinghost")
}
}
$fnSend chatid=$chatid text=$text

# End


Crazyk1
Сообщения: 2
Зарегистрирован: 05 фев 2022, 10:53

Не силен в скриптах, скрипты по типу telega_test отрабатывают, сообщения приходят, но основной скрипт не работает.
При запуске в терминале
[Cat@mikrotik] > # script modified by Virtue
[Cat@mikrotik] > :local botID "bot11111111111111111111111111111111111111"
[Cat@mikrotik] > :local chatID "-11111111111111111"
[Cat@mikrotik] >
[Cat@mikrotik] > :global content [/tool fetch url=("https://api.telegram.org/".$botID."/getUpdates") as-value output=user]
failure: closing connection: <404 Not Found> 149.154.167.220:443 (5)

Далее ошибок не пишет.
RoS 7.1.1


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

При запуске в терминале скрипт нужно забирать в {}, тем самым поместив все команды в одну локальную область. Вы не просто не сильны в скриптах. Вы совсем ничего не знаете.


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

1. Скрипты запускаю
можно с параметром (через переменную :global)
2.команды запускаю (путем создания scripta вставка в него команд и его запуска)
при передаче команд telegram добавляет перед " обратный слешь (приходится удалять)
3.журнал получаю по email + переменные окружения script env.... (контроль переменных global)
запуск скрипта.
4.Задачу не могу понять как решить передать файл-скрипт на mikrotik и его запомнить для дальнейшего
использования
если с telegram послать файл по технологии GetUpdates
то вместо :
.............."text":"..."}}]}
приходит :
............."document":{"file_name":"new4.txt","mime_type":"text/plain",
"file_id":"BQACAgIAAxkBAAIBJGIThySP4omYU756WYp8K_Rm8_SkAAKaFAACv02gSHPLkjrMONu9IwQ",
"file_unique_id":"AgADmhQAAr9NoEg","file_size":125}}}]}

где содержимое файла ? что делать дальше ???
Гуру помогите ????


Ответить