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

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
 

Комментарии

  1. не актуальна ваша статья телеграм клиент больше не работает на raspberry!

    ОтветитьУдалить
  2. Анонимный16 июня 2018 г., 7:51

    тоже не работает. даже не предлагает ввести номер телефона.

    ОтветитьУдалить

Отправить комментарий

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

Raspberry Pi 3 - видеонаблюдение

Raspberry Pi 3 - видеонаблюдение Прежде чем начать со стандартных шагов
sudo apt-get update sudo apt-get upgrade необходимо добавить в /etc/apt/sources.list дополнительный источник:
deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi


Далее устанавливаем по официальной пошаговой инструкции motioneye: Install On Raspbian.

Перед началом установки настоятельно рекомендую начать с sudo -I.

Для поддержки работы модуля камеры нужно добавить запись bcm2835_v4l2 в /etc/modules

sudo nano /etc/module
Не забываем открыть порты 8765 (админка ), 8081 (видео стрим камеры), 8082 (если камеры две).

Надо будет еще попробовать:
сохранение видео и фото файлов на яндекс-диск
отсылка сообщений по датчику движения через WhatsApp



Raspberry Pi 3 - банный день

Raspberry Pi 3 - банный деньПосле открытия портов на рутере начались бесконечные попытки подбора пароля по ssh... Начнем с простого: закроем порт 22, вернее заменим его на какой либо другой.

sudo nano /etc/ssh/sshd_config


Ищем строку
#Port 22

И меняем её на какой либо пятизначный
Port 12345

Заодно запретим удаленный логин для root
PermitRootLogin no

Теперь проверим настройки фаервола:

pi@raspberrypi:~ $ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere                 
80/tcp                     ALLOW       Anywhere                 
5900                       ALLOW       Anywhere                 
3389                       ALLOW       Anywhere                 
8200                       ALLOW       Anywhere                 
22/tcp (v6)                ALLOW       Anywhere (v6)            
80/tcp (v6)                ALLOW       Anywhere (v6)            
5900 (v6)           …