К основному контенту

Raspberry Pi 3 и Telegram CLI - установка

Raspberry Pi 3 и Telegram CLI - установка


Так уж получилось, что я приобрел (сделал себе небольшой подарок) Raspberry Pi 3 и занялся ее и линукса в частности изучением, благо ресурсов по этой теме в сети хватает.

Начать решил с минимального шлюза во внешний мир. Для этих целей вроде, как нельзя лучше, подходит Телеграм. Начнем с Telegram CLI, позже попробем сделать и бота.

И так начнем!

Отправным пунктом будет статья: http://www.instructables.com/id/Telegram-on-Raspberry-Pi/

1. устанавливаем библиотеки:

sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev make
мне понадобилась еще и 
sudo apt-get install libjansson-dev
 

2. Клонируем архив:

git clone --recursive https://github.com/vysheng/tg.git && cd tg
 

3. конфигурируем и пытаемся собрать проект

./configure
make 

на этом этапе могут появиться ошибки:
l/crypto/rsa_pem_openssl.c:41:6: error: dereferencing pointer to incomplete type ‘RSA {aka struct rsa_st}’
   ret->e = unwrap_bn (TGLC_bn_new ());
      ^~
tgl/crypto/rsa_pem_openssl.c: In function ‘TGLC_rsa_n’:
tgl/crypto/rsa_pem_openssl.c:52:1: error: control reaches end of non-void function [-Werror=return-type]
 RSA_GETTER(n);
 ^~~~~~~~~~
tgl/crypto/rsa_pem_openssl.c: In function ‘TGLC_rsa_e’:
tgl/crypto/rsa_pem_openssl.c:53:1: error: control reaches end of non-void function [-Werror=return-type]
 RSA_GETTER(e);
 ^~~~~~~~~~
cc1: all warnings being treated as errors
Makefile.tgl:20: recipe for target 'objs/crypto/rsa_pem_openssl.o' failed
make: *** [objs/crypto/rsa_pem_openssl.o] Error 1

4. Устанавливаем патч #1

https://github.com/matthiasbock/tgl/commit/475855bd74dce27b6bacd0ded13df0643722075b

(Как вариант можно сделать и так ./configure --disable-openssl, но я не проверял.)

Теперь проект собирается, но не работает, вылетает с ошибкой: telegram-cli: tgl/mtproto-utils.c:101: BN2ull: Assertion 0' failed. SIGNAL received.

5. Устанавливаем патч #2

В файле tgl/mtproto-utils.c закоментируем строки 101 и 115:
assert (0); // As long as nobody ever uses this code, assume it is broken.



Здесь описано подробнее: http://www.jt360.net/home/tech-articles/install-and-configure-the-telegram-client-on-raspberry-pi


И снова пробуем make. Теперь проект должен был собраться без ошибок.

6. Проверяем

bin/telegram-cli -k tg-server.pub -W
При первом запуске будет предложено указать номер телефона и ввести код активации (будет прислан на указанный номер).

7. Тестируем, отправляем сообщения, радуемся

msg First_Lastname your message
send_poto First_Lastname /folder/photo.jpg

Список команд: https://github.com/vysheng/tg/wiki/Telegram-CLI-Commands

8. Автоматизируем отправку сообщений


Создадим файл со следующим содержанием:

sudo nano /home/pi/tg.sh
#!/bin/bash
  to=$1
  msg=$2
  tgpath=/home/pi/tg
  cd ${tgpath}
  (echo "msg $to $msg"; echo "safe_quit") | ${tgpath}/bin/telegram-cli -k tg-server.pub -W
 
Сделаем его исполняемым:
sudo chmod -R 0655 /home/pi/tg.sh

и проверим
/home/pi/tg.sh Name_Lastname "your message"

хм, не работает...
FAIL: 38: can not parse arg #1


Слегка модифицируем скрипт:
#!/bin/bash
  to=$1
  msg=$2
  tgpath=/home/pi/tg
  cd ${tgpath}
  ${tgpath}/bin/telegram-cli -k tg-server.pub -WRD -e "msg $to $msg"
 
-W            send dialog_list query and
              wait for answer before reading input 
-R            disable readline 
-D            disable output
-e "commands" make commands end exit
 
Проверяем еще раз:
$ ~/tg.sh Name_Lastname "your message2"
All done. Exit
halt

Теперь работает.

-----------------------------------------------------------------
P.S. Все действия проводились под этой конфигурацией :

$ gcc --version
gcc (Raspbian 6.3.0-18+rpi1+deb9u1) 6.3.0 20170516

$ apt-cache policy libssl-dev
libssl-dev:
  Installed: 1.1.0f-3+deb9u1
  Candidate: 1.1.0f-3+deb9u1
  Version table:
 *** 1.1.0f-3+deb9u1 500
        500 http://mirrordirector.raspbian.org/raspbian stretch/main armhf Packages
        100 /var/lib/dpkg/status
 

Комментарии

Популярные сообщения из этого блога

Этот пост огорчит Вашего Кота :)

Вчера попал в 18 километровую пробку. По радио сказали, что произошла сильная авария. Когда доехали до места аварии, разбитых машин уже не было, но дорогу старательно отмывали от... песочка для котячих туалетов! Видимо вывалилось из грузовика. Это всеравно, что тушить Памперсы :) На обратном пути, через 3 часа, дорожная служба все еще отдирала дорогу!

P.S. "Повезло" прочувствовать аквапланинг :( на 140км/ч при перестроении. На Quattro такого никогда не было! >:-(