Скрипт оповещения в телеграмм

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

podarok66 писал(а): 21 май 2020, 18:15 Обычное условие не прокатит?
а действительно, может и прокатит, что-то я не ищу легких путей :hi_hi_hi:
попробую - отпишусь


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

drpioneer писал(а): 21 май 2020, 18:24 Есть такой вариант, правда он медленный:

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

    if ($index != 
ваш вариант подходит только для одного исключаемого значения, всетаки думаю придется использовать "~"

вообще очень странно получается, составил вот такой код:

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

{
:local startBuf [/log find message~"2045461"]
:local removeThese [/log find message~"10440303368"]

 :foreach i in=$startBuf do={
   if ($i != $removeThese) do={
   :put "$i != $removeThese"
   } else={:put "$i = $removeThese"}
 }
}
у меня это из одной и тойже строки лога, так что должно быть равно, но мне выдает:
*2F != *2F

а вот так все нормально:

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

{
:local startBuf [/log find message~"2045461"]
:local removeThese [/log find message~"10440303368"]

   if ($startBuf != $removeThese) do={
   :put "$startBuf != $removeThese"
   } else={:put "$startBuf = $removeThese"}
}
*2F = *2F
я кажется понял в чем дело :-):
drpioneer писал(а): 21 май 2020, 18:24 Есть такой вариант
попробовал сделать по вашему

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

{
:foreach index in=[ /log find message~"2045461" ] do={
    if ($index != [ /log find message~"10440303368" ]) do={
        :put ($index."!=".[ /log find message~"10440303368" ]);
    } else={:put ($index."=".[ /log find message~"10440303368" ])}
}
}
выдал
*2F!=*2F

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


Аватара пользователя
hulitolku
Сообщения: 34
Зарегистрирован: 07 окт 2018, 11:59

podarok66 писал(а): 14 мар 2020, 18:45
r67wru писал(а): 14 мар 2020, 18:23 Жалко в России уже не работает...
Телеграмм? Да ладно! От болталок школьников до каналов государственных предприятий всё работает. Видимо у вас какая-то другая Россия. Может вы из будущего? :sh_ok:
Сама телега работает через соксы, а api напрямую.
R2B2 писал(а): 10 авг 2019, 12:47 Доброе!
Подскажите, а есть какой-нибудь способ заставить ходить fetch через прокси ? как сurl, например...
спасибо
Я сделал так:
Поднял на компьютере из сети ssh сервер и с помощью скрипта, с микротика произвожу запуск api telegraм через проксю с помщью курлы.


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

hulitolku писал(а): 23 май 2020, 02:24 Я сделал так:
Поднял на компьютере из сети ssh сервер и с помощью скрипта, с микротика произвожу запуск api telegraм через проксю с помщью курлы.
а по подробнее слабо?
что за сервер, что за скрипт


Аватара пользователя
hulitolku
Сообщения: 34
Зарегистрирован: 07 окт 2018, 11:59

Virtue писал(а): 23 май 2020, 15:03 а по подробнее слабо?
что за сервер, что за скрипт
На компе устанавливаю OpenSSH сервер, много разных перепробывал, мне лично понравился bitvisessh.
/Далее настраиваю авторизацию по публичным ключам.
Закидываю ключи на микротик и импортирую:

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

/user ssh-keys private import private-key-file=id_dsa public-key-file=id_dsa.pub user=admin
Проверяю что с микротика выполняется заход на комп по ssh без пароля.
На компе создаю скрипт (tele.cmd кладу его в папку scripts) запуска curl через проксю:

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

curl --socks5-hostname айпипрокси:порт "https://api.telegram.org/bot000000000:AAFQpXv5SK5gY3gMLPSYS8XHX1Ux7FvB3G8/sendmessage?chat_id=22222222&text=Привет мир"
exit
На микроте делаю скрипт:

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

/system ssh-exec address=ipлокальногокомпа user=admin command="c:/scripts/tele.cmd"
Ну а дальше этот скрипт уже вставляется в условия других скриптов.


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

hulitolku писал(а): 23 май 2020, 15:15 На микроте делаю скрипт:

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

/system ssh-exec address=ipлокальногокомпа user=admin command="c:/scripts/tele.cmd"
Ну а дальше этот скрипт уже вставляется в условия других скриптов.
А вот это для меня новость! Видимо совсем я не слежу за обстановкой! Оказывается так можно было. Интересно, и давно это?
Тут срочно накорябал проверочную строку

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

[podarok66@RB750Gr3] > :put ([/system ssh-exec address=192.168.100.10 user=podarok66 command="/log info message=\"Vsem hana!\"" as-value]->"exit-code")
Ответ Но! При неправильном варианте команды в поле command (например лишняя скобка незакрытая)

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

:put ([/system ssh-exec address=192.168.100.10 user=podarok66 command="[/log info message=\"Vsem hana!\"" as-value]->"exit-code")

через раз получаю то 0, то 1. Надо бы мне с этим разобраться.
Тут есть варианты для домашних железок, которые мне подойдут. Лишь бы проверку исполнения наладить нормально.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
hulitolku
Сообщения: 34
Зарегистрирован: 07 окт 2018, 11:59

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

ssh-exec command= очень капризен к двойным кавычкам
Я решил это таким образом:

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

:global curl
set curl "curl --socks5-hostname айпипрокси:порт" 
:global api
set api "\"https://api.telegram.org/bot000000000:AAFQpffgvhggffghhgYgfhgLPSYS8XHX1Ux7FvB3G8/sendmessage?chat_id=00000000&text="
/system ssh-exec address=192.168.1.2 user=admin command="$curl $api%20%0AПривет%20мир"
\" - кавычки в кавычках
%20 - пробел
%0A - энтер


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

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

set api "\"https://api.telegram.org/bot000000000:AAFQpffgvhggffghhgYgfhgLPSYS8XHX1Ux7FvB3G8/sendmessage?chat_id=00000000&text="
Эту строку не понял. Три двойных кавычки. Они всегда парные должны быть... Если есть одна " экранированная, должна быть такая же вторая.


Мануалы изучил и нигде не ошибся? Фаервол отключил? Очереди погасил? Витая пара проверена? ... Тогда Netinstal'ом железку прошей и настрой ее заново. Что, все равно не фурычит? Тогда к нам. Если не подскажем, хоть посочувствуем...
Аватара пользователя
hulitolku
Сообщения: 34
Зарегистрирован: 07 окт 2018, 11:59

podarok66 писал(а): 24 май 2020, 16:24 Три двойных кавычки. Они всегда парные должны быть... Если есть одна " экранированная, должна быть такая же вторая.
Верно. В переменную переносится одна и в случае с curl работает как с одной, так и с парными.
Лучше наверное сделать парными.


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

Я всегда стараюсь использовать полные формулировки в скриптах. Так как кодер из меня никакой, мне через какое-то время даже сложно вспомнить, что там и откуда. Поэтому весь анализ в редакторе глазками. И там непарная кавычка может ввести в заблуждение.


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