Jump to content
Александр Рыжов

Управление роутером по Telegram

Recommended Posts

Можно организовать чат с роутером, словно вы находитесь в CLI кинетика.

b92d38f5d243.png

Для этого необходимо.

  • Установить необходимые пакеты:
    opkg install bash curl dtach
     

     

  • Скачать bash-скрипт, который будет выполнять функции бота Telegram:
    curl --output /opt/bin/bashbot.sh --insecure https://raw.githubusercontent.com/ryzhovau/telegram-bot-bash/master/opt/bin/bashbot.sh
    curl --output /opt/bin/JSON.sh --insecure https://raw.githubusercontent.com/ryzhovau/telegram-bot-bash/master/opt/bin/JSON.sh
    curl --output /opt/etc/init.d/S51bashbot  --insecure https://raw.githubusercontent.com/ryzhovau/telegram-bot-bash/master/opt/etc/init.d/S51bashbot
    chmod +x /opt/bin/bashbot.sh
    chmod +x /opt/bin/JSON.sh
    chmod +x /opt/etc/init.d/S51bashbot
     

     

  • Попросить робота @BotFather создать нового бота, в ответ получите токен для его авторизации.
  • Вписать полученный токен между одинарными кавычками в строке TOKEN='' файла /opt/bin/bashbot.sh.
  • Заменить в /opt/bin/bashbot.sh строчку
    *) msg="$MESSAGE";;
     

    на строчку

    *) msg=$(ndmq -p "$MESSAGE" -x);;
     

     

  • Запустить на роутере бота, выполнив /opt/etc/init.d/S51bashbot start. Бот будет автоматически стартовать после перезагрузки роутера.

Вопросы безопасности сознательно опускаю. К примеру, вы можете настроить бота так, чтобы он отвечал на сообщения только от определённого пользователя. Все обращению к боту фиксируются в файле /opt/var/log/bashbot.log.

Приведённый пример бота — просто баловство, proof of concept. Если пожелаете, вы можете найти ему более серьёзное применение.

Edited by Александр Рыжов
  • Thanks 2
  • Upvote 1

Share this post


Link to post
Share on other sites

Есть возможно сделать скрипт более интересным образом к примеру чтобы при подключении к wifi приходила смс на телеграм, чет сам пытался не запустилось не чего.

Share this post


Link to post
Share on other sites

Доброго дня! А в этом боте можно свои кнопки сделать? Если да, то как?

Share this post


Link to post
Share on other sites
@BotFather рассказывает про кнопки в момент общения. Видимо, проглядели, когда создавали бота.

Ничего не получается(( Отправил пробные команды:

help - Помощь
top - Загрузка
logtail - Последние команды

, он ответил: Success! Command list updated., при этом ничего не изменилось, а еще вдруг непонятно отчего перестал запускаться сервис по /opt/etc/init.d/S51bashbot start, по /opt/bin/bashbot.sh запустился, роутер живет своей жизнью(

P.S.: После ручного удаления bashbot.socket заработало.. Это из-за чего так было и что можно сделать, чтобы не повторялось?

P.S.2: Появились типа кнопки, но не те о которых я говорил, я о таких как в ботах типа @clarabot

Share this post


Link to post
Share on other sites

:idea: вообщем, если я правильно понял для чего нужно "dtach -n /opt/var/bashbot.socket" , то я поменял эту строку на PREARGS="screen -dmS bashbot.socket". Как с dtach тормозов не наблюдаю :roll:

P.S.: А как воспользоваться ботом для отправки сообщения по событию или в кроне?

Edited by Guest

Share this post


Link to post
Share on other sites
В 22.07.2016 в 16:27, Александр Рыжов сказал:

Хотел сделать так, отредактировал скрипт с учетом специфики прошивки, отредактировал на использование wget-ssl, но ругается:

ERROR: cannot verify api.telegram.org's certificate, issued by 'CN=Go Daddy Secure Certificate Authority - G2,OU=http://certs.godaddy.com/repository/,O=GoDaddy.com\\, Inc.,L=Scottsdale,ST=Arizona,C=US':
  Self-signed certificate encountered.

Как пофиксить?

 

Edited by rigmad

Share this post


Link to post
Share on other sites
15 часов назад, Александр Рыжов сказал:

Добавить в ключи wget'a --no-check-certificate.

Не секурно же, лучше opkg install ca-certificates

Share this post


Link to post
Share on other sites

Если я верно понял то строка, вырезает ник отправителя

 USER=$(echo $res | JSON.sh | egrep '\["result",0,"message","from","user"\]' | cut -f 2 | cut -d '"' -f 2)

В логе в результате 

[2016.09.28_00:21:32][] /top

 

Нужно заменить user на first_name

 

USER=$(echo $res | JSON.sh | egrep '\["result",0,"message","from","first_name"\]' | cut -f 2 | cut -d '"' -f 2)

В результате

[2016.09.28_00:42:54][dcloud] /top

 

 

Share this post


Link to post
Share on other sites
В 07.09.2016 в 00:26, KorDen сказал:

Не секурно же, лучше opkg install ca-certificates

Боитесь, что кто-то перехватит скачивание скрипта на роутер? Ок, ваше право.

10 часов назад, doscloud сказал:

Нужно заменить user на first_name

 

Всё верно, ника у Telegram-пользователя может и не быть. Но есть ли толк в логе от его first_name — отнюдь не очевидно.

 

Перед вами конструктор, можете лепить из него всё, что пожелаете.

Share this post


Link to post
Share on other sites
1 минуту назад, Александр Рыжов сказал:

Всё верно, ника у Telegram-пользователя может и не быть. Но есть ли толк в логе от его first_name — отнюдь не очевидно.

На основе этой строчки делал проверку по нику, не вышло, вот и полез. Толк наверно чисто эстетический.

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Краткая инструкция:  Для автоматизаций и распарсивания далее по вкусу))) 

1. Написать в телеграмм пользователю @BotFather

    /newbot - создать бота, попросит придумать имя и ник (ник должен содержать слово "bot")

    /token - получить <API_ID>

2. Написать любоее сообщение своему боту, создать чат 

3. По ссылке "https://api.telegram.org/bot<API_ID>/getUpdates" узнать <CHAT_ID>  в поле "chat":"id": ХХХХХХХХ" 

4. Самые простые способы

         Отправить сообщение:

    wget -O - --no-check-certificate "https://api.telegram.org/bott<API_ID>/sendMessage?chat_id=<CHAT_ID>&text=Привет мир"

         Отправить фото (должно быть доступно по ссылке интернета):

    wget -O - --no-check-certificate "https://api.telegram.org/bot<API_ID>/sendphoto?chat_id=<CHAT_ID>&photo=http://XXXXXXXXX.jpg"

          Получить  отправленные боту сообщения: из ссылки в пункте 2 

    wget -O - --no-check-certificate "https://api.telegram.org/bot<API_ID>/getUpdates"

          Получить отправленную боту картинку:  <file_path> - также можно узнать из ссылки в пункте 2

    wget -O - --no-check-certificate "https://api.telegram.org/file/bot<API_ID>/<file_path>"  <file_path> - также можно узнать из ссылки в пункте 2

 

 

Edited by pitersidr
  • Thanks 2

Share this post


Link to post
Share on other sites

Как на гиге отследить события прошивочного pptp впн-сервера (подключение/отключение) клиента, чтобы отправлять по телеграму? Возможно ли так же отправлять только критические  события сислога?

Share this post


Link to post
Share on other sites

Можно фильтровать syslog налету и реагировать на определённые строки.

tail -f /tmp/syslog.log | \
while read line ; do
	echo "do something with $line"
done

 

Share this post


Link to post
Share on other sites
10 минут назад, Александр Рыжов сказал:

Можно фильтровать syslog налету и реагировать на определённые строки.


tail -f /tmp/syslog.log | \
while read line ; do
	echo "do something with $line"
done

 

а эту штуку чтобы она как демон работала тоже как бэшбот в скрине запустить наверное надо?

Edited by emlen

Share this post


Link to post
Share on other sites
On 28.01.2016 at 1:56 PM, Александр Рыжов said:

Можно организовать чат с роутером, словно вы находитесь в CLI кинетика.

 

Интересно, а можно такое сделать для Pidgin-а?

Share this post


Link to post
Share on other sites

Доброго времени суток,  эта строчка скрипта

USER=$(echo $res | JSON.sh | egrep '\["result",0,"message","from","username"\]' | cut -f 2 | cut -d '"' -f 2)

определяет  имя пользователя пишушего боту.

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

if then else, пробую сам , но увы не силен я в скриптах.

или может добавить куда chat_id , чтолб только с одним юзером общавлся.

Помогите пожалуйста.

 

Все спасибо. вопрос закрыт. разобрался.

Edited by Павел
Разобрался

Share this post


Link to post
Share on other sites
Цитата

Подскажите как правильно прикрутить - чтоб бот общалься с одни юзером, а остольным, кто пишет ему, отправлял определенное сообщение


Поздно заметил Ваш вопрос. Все-таки поделюсь.
В своем проекте использовал следующую простую конструкцию, помещенную в самом конце скрипта:

[ $USER = $NAMEA ] || send_message "$TARGET" "Sorry. Private bot"
[ $USER = $NAMEA ] && send_message "$TARGET" "$msg"

Заменив строку

send_message "$TARGET" "$msg"
  Переменная NAMEA задается в начале скрипта и хранит значение Вашего username, взятого из Telegram
Edited by exared

Share this post


Link to post
Share on other sites

ага. спс . попробую так,

Сам решил так.

добавил еще одно условие

if [ $USER = "тут имя" ]; then

а потом далее оригинал скрипта

        if [ $OFFSET != 1 ]; then
                case $MESSAGE in
..........................

...................................
                    *) msg="$MESSAGE";;

                esac
                send_message "$TARGET" "$msg"
            fi
        else

            send_message "$TARGET" "Соробщение ограничения."

          fi 

 

Share this post


Link to post
Share on other sites

Подскажите, как реализовать перенос строки в сообщениях от бота Telegram? Ни один из способов не работает: /n \n %0A /r/n

Share this post


Link to post
Share on other sites
В 23.12.2017 в 15:24, exared сказал:

Подскажите, как реализовать перенос строки в сообщениях от бота Telegram? Ни один из способов не работает: /n \n %0A /r/n

У меня работает просто enter в скрипте между ' '

типа:

'blablabla
blablabla'

в telegram прилетает 2 строки.

  • Thanks 1

Share this post


Link to post
Share on other sites

Господа, подскажите пожалуйста, можно ли через telegram управлять (ставить на закачку) magnet ссылку в transmission?

Share this post


Link to post
Share on other sites
В 27.06.2016 в 08:30, emlen сказал:

Доброго дня! А в этом боте можно свои кнопки сделать? Если да, то как?

Добавьте в скрипт приведенную ниже функцию, предварительно задав новую переменную KMSG_URL:

KMSG_URL=$URL'/sendMessage'

 

function send_keyboard {
    local text="$1"; shift 1; local keyboard=init
    OLDIFS=$IFS; IFS=$(echo -en "\"")
    for f in $*;do [ "$f" != " " ] && local keyboard="$keyboard, [\"$f\"]";done
    IFS=$OLDIFS; local keyboard=${keyboard/init, /}
    res=$(curl -s "$KMSG_URL" --header "content-type: multipart/form-data" -F "chat_id=$TARGET" -F "text=$text" -F "reply_markup={\"keyboard\": [$keyboard],\"one_time_keyboard\": false}")
}
Скрытый текст

c87484e3e4258cd7b4bfe58d0f93b829.png


Аргументы функции: первый - сообщение в чате, последующие - надписи на кнопках. При нажатии на кнопку соответствующая надпись может быть использована как команда. Поэтому кириллица в аргументах функции (кроме первого) нежелательна.
Поле one_time_keyboard указывает клиенту скрыть или нет клавиатуру после использования (после нажатия на кнопку). Её по-прежнему можно будет открыть через иконку в поле ввода сообщения. По умолчаниюFalse
Пример использования:

send_keyboard "I can help you find and share classical music" "Get random music" "Send music to friends"



 

Edited by exared
  • Upvote 3

Share this post


Link to post
Share on other sites

А как -то можно локальное фото отправлять?

GIGA II

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...