GeekzeugLinux & Co.Software

Anleitung: Telegram-Terminal-Client installieren und nutzen

Für Linux gibt es für Telegram einen kompletten, gut zu nutzenden und sogar hübschen CLI-Client. Das ist nicht nur eine schöne Spielerei (das ist es!), sondern auch nützlich, da Ihr so super einfach Nachrichten, Dateien, Fotos oder Videos per Skript an Telegram senden könnt. Und eine kleine Gemeinheit für Gruppen-Chats gibt’s obendrein :)

Damit Ihr wisst, worauf das Ganze hinausläuft, hier mal ein Bild des Clients im Einsatz:

telegram cli client
Keine Sorge, es erscheint nur in den ersten Minuten unübersichtlich.

1. Telegram messenger CLI installieren

Nicht ganz untypisch für CLI-Programme: Die Installation ist deutlich einfacher als später der Einstieg ;) Zunächst klont Ihr die Programmdaten von Github auf Euren Rechner und wechselt in das neue Verzeichnis „tg“:

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

Installiert nun allerlei Abhängigkeiten. Die folgende Zeile gilt für Debian, Ubuntu, Mint und Ubuntu-Derivate. Die Befehle für andere Systeme findet Ihr auf der Homepage.

sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev libevent-dev libjansson-dev libpython-dev make 

Anschließend muss der geklonte Quellcode noch zu einem ausführbaren Programm verwurstet werden – daher die beiden üblichen Befehle:

./configure
make

Und damit ist die Installation abgeschlossen.

2. Telegram im Terminal nutzen

So schön das Tool auch ist, die Dokumentation lässt Laien nach der Installation komplett im Regen stehen und auch erfahrenere Nutzer müssen sich ein wenig umschauen. Wenn aber weiß wie es geht, ist die Nutzung erstaunlich einfach.

Zunächst müsst Ihr das Programm starten – ein sinnvoller, einfacher Befehl:

bin/telegram-cli -W -N -k tg-server.pub

Die Option -k tg-server.pub braucht Ihr immer, da sich in der Datei der öffentliche Schlüssel des Servers befindet, der für die Authentifizierung benötigt wird – muss Euch nicht weiter kümmern. Das W sorgt dafür, dass beim Start die Liste Eurer Chats geladen wird – ohne könnt Ihr Kontakte nur anschreiben, nachdem Ihr sie manuell importiert habt oder nachdem sie Euch geschrieben haben. Und ganz wichtig ist auch das N, da es jeder Nachricht eine laufende Nummer voranstellt – und die braucht Ihr, um zum Beispiel Bilder anzuschauen. Übrigens: Alle Nachrichten aller Kanäle, Gruppen oder Kontakte landen direkt im Terminal, Ihr müsst nicht wie beim grafischen Client einen Chat anwählen.

Um nun eine Nachricht zu schreiben, gebt Ihr einen Befehl dieser Art ein:

msg MeineGruppe Hallo Doofmann!

Nach msg könnt Ihr mittels TAB alle Kontakte einblenden lassen beziehungsweise deren erste Buchstaben eingeben und vervollständigen lassen (dank der W-Option). Tipp: Über die Pfeil-nach-oben-Taste könnt Ihr auf alte Eingaben zurückgreifen.

Das Versenden von Fotos funktioniert fast genauso:

send_photo MeineGruppe doofmann.jpg

Das dürfte soweit selbsterklärend sein – im Gegensatz zum Anzeigen eines Fotos:

view_photo 22

Der Befehlt view_photo benötigt die Nummer der Nachricht, eben jene Nummer, die Ihr über die Option -N aktiviert habt. Die Nummer sind Session-abhängig. Wenn Ihr dauerhafte Nummer wollt, könnt Ihr das über die zusätzliche Option –permanent-msg-ids erreichen. Fotos, Videos und andere Dateien werden in den Downloads-Ordner geladen und dann mit dem jeweiligen Standardprogramm lokal geöffnet.

telegram cli client
Auch Bilder können – extern – angezeigt werden.

Noch ein paar Beispiele für Befehle:

chat_info MeineGruppe 
user_info Peter
quit

Alle Befehle findet Ihr wieder auf der Github-Projektseite, alle Startoptionen wie üblich über telegram-cli –help. Da Ihr nun das Grundprinzip kennt, solltet Ihr mit der Befehlsreferenz klarkommen.

3. Telegram per Skript nutzen

Um Telegram-Nachrichten per Skript zu schicken, müsst Ihr an dem Startbefehl gar nicht viel ändern. Erstmal ein Beispiel:

bin/telegram-cli -W -N -k tg-server.pub -e "send_text Peter meintext.txt"

Die neue Option e sagt: Befehle ausführen und dann beenden. Und der Befehl in den Anführungszeichen sollte Euch keine Rätsel aufgeben, es wird schlicht der Text aus der Datei „meintext.txt“ als Nachricht an Peter geschickt. Wohlgemerkt der Inhalt der Datei, nicht die Datei selbst! Statt einer Textdatei könnt Ihr natürlich auch eine Variable der Art $a verwenden.

Wer es sofort probieren will und keine Angst vor schlechtem Code hat, hier ein Skript, das minütlich die aktuelle CPU-Auslastung sowie die Namen aller am Rechner angemeldeten Nutzer an Peter schickt:

while true
do
echo CPU-Auslastung: > cpuusage_data &&
mpstat 2 1 | awk '$12 ~ /[0-9.]+/ { print 100 - $12"%" }' >> cpuusage_data &&
echo Benutzer: >> cpuusage_data &&
users >> cpuusage_data &&
bin/telegram-cli -W -N -k tg-server.pub -e "send_text Peter cpuusage_data" &
sleep 60
done

Das Gerüst bildet eine While-Endlos-Schleife (while true ist einfach immer wahr …), die beiden echo-Zeilen fügen einfach Text in die (anfangs leere) Datei cpuusage_data hinzu und der telegram-cli-Befehl schickt die Nachricht an Peter, bevor 60 Sekunden geschlafen wird. Die eigentlichen Inhalte kommen von mpstat und users. Bei mpstat wird 2 Sekunden lang gemessen und 1 Bericht erstellt. Die awk-Anweisung zieht dann einfach die relevanten Daten heraus, hier die aktuelle CPU-Auslastung in Prozent.

telegram cli client
Der Client eignet sich super für’s Scripting!

Nun wollt Ihr sicherlich nicht minütlich über derart statischen Kram benachrichtigt werden. Aber stellt Euch vor, die Nachrichten auf interessante Vorkommnisse zu beschränken, etwa die Anwesenheit eines speziellen Nutzers oder extrem hohe CPU-Auslastung. Ihr könnt mit Telegram durchaus ein kleines Monitoring-System aufbauen.

Die kleine Gemeinheit, die wir Euch versprochen haben: In Gruppen seht Ihr im grafischen Telegram-Client, wenn Eure Nachricht gelesen/gesehen wurde – aber nicht von wem. Im Terminal seht Ihr sehr wohl, welches Gruppenmitglied den „Gesehen“-Status ausgelöst hat.

Vielleicht interessiert Euch auch unsere Anleitung zum Erstellen eigener Telegram-Bots. Oder eher der Titten-und-Katzen-Artikel?? Und wir haben noch einige mehr.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

7 Kommentare

  1. Seit einiger Zeit scheint die telegram-cli nicht mehr zu funzen. Es kommen zwar noch Meldungen wie „UserXY online“ und man kann auch noch msg versenden, aber es kommt nichts mehr an, was man zu dem in der cli angemeldeten Benutzer sendet.
    Ist das nur bei mir so? Wo kann der Fehler liegen?
    Habe schon versucht nochmal von vorne anzufangen, also alles nochmal neu zu kompilieren, aber ohne Erfolg. Auch der Fork (https://github.com/kenorb-contrib/tg) geht nicht besser.

  2. Klingt an sich interessant. Würde mich interessieren ob es so etwas als docker gibt. Ziel wäre das mit starten von docker ein Script ausgeführt wird, welches in gewissen (definierbaren) Zeitabständen, einen zufälligen Satz (eine von mehreren Zeilen einer Textdatei) in eine definierte Gruppe sendet.

    Bekommt das jemand hin?

  3. Habe noch ein Problem auf dem Raspberry Pi entdeckt:
    Nach dem Start des kompilierten Programmes brach dieses mit einer Fehlermeldung ab. Bei Nachforschungen fand ich heraus, dass in der Datei tgl/mtproto-utils.c die Zeilen 101 und 115 auszukommentieren sind, da der Raspberry Pi wohl nur 8 Byte lange Long-Variablen hat. Nach anschließender Kompilation funktionierte das Programm wie gewünscht auch auf dem Raspberry Pi.

      1. Hallo, habe die Fehlermeldungen:
        tgl/crypto/rsa_pem_openssl.c: In function ‘TGLC_rsa_new’:
        tgl/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. Ich hatte bei der Installation unter Ubuntu 18.04 folgendes Fehlerbild nach „make“:
    tgl/crypto/rsa_pem_openssl.c: In function ‘TGLC_rsa_new’:
    tgl/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

    Einen Hinweis dazu fand ich unter: https://matoken.org/blog/2018/09/19/try-telegram-cli-of-informal-cli-client-of-telegram/

    Es sollte noch zusätzlich die libssl installiert werden: sudo apt install libssl1.0-dev

    Nach dieser Aktion lies sich Telegram-cli fehlerfrei installieren.

Schreibe einen Kommentar zu Mirco Lang Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.