Skip to main content

cli2telegram

Small utility to send Telegram messages from the CLI.

This can f.ex. be used to

  • quickly send arbitrary messages to a Telegram chat of your choice
  • use it as a replacement for the "mail" program on linux
  • use Telegram as a notification backend for the ZFS Event Daemon (zed)

Features

  • Read messages from argument or STDIN
  • (Optional) Configuration file
  • Retry sending messages for a specified amount of time
  • Handling of long messages
  • Run as a daemon and echo messages into a linux pipe

Examples

cli2telegram -h

# From arguments
cli2telegram "This is a message"

cli2telegram "Header" "This is a multiline message."

# From STDIN
echo My Message | cli2telegram

printf "Header\nThis is a multiline message." | cli2telegram

# Config via parameters
printf "Message" | cli2telegram -b "123456789:ABCDEFG" -c "123456789"

# Config via parameters and send message in a code block
printf "Message" | cli2telegram -b "123456789:ABCDEFG" -c "123456789" -C

# as a Daemon
cli2telegram -d -p "/tmp/cli2telegram"
echo "hello world!" > /tmp/cli2telegram

Install

To use this utility install it either using:

pip install cli2telegram

or - if you don't want to install it globally - using f.ex. venv-install:

venv-install cli2telegram cli2telegram

or your custom venv manager of choice.

Configuration

To be able to send you messages you have to provide a bot token and a chat id. You can configure cli2telegram using cli parameters, a configuration file, environment variables, or a combination of them.

Parameters

Name Type Description
-b, --bot-token String Telegram Bot Token
-c, --chat-id String Telegram Chat ID
-C, --code-block String Send message inside a code block
-d, --daemon Flag Run as a daemon
-p, --pipe String File path to the pipe used in daemon mode

File

cli2telegram uses container-app-conf so you can use YAML, TOML, or ENV to set those.

Have a look at the cli2telegram.toml_example file to get an idea.

Daemon

When running cli2telegram as a daemon, the pipe will close for a brief amount of time between receiving input messages. If you are sending multiple messages to the pipe using f.ex. a script, make sure to wait a bit (f.ex. 0.5 seconds) between sending messages, otherwise:

  • multiple messages may be received as one
  • messages may get lost
  • you may receive a Broken pipe error

Use Cases

ZFS Event Daemon (ZED)

To make zed call cli2telegram we will trick it and make it use cli2telegram as an E-Mail client.

Edit /etc/zfs/zed.d/zed.rc as root:

sudo nano -w /etc/zfs/zed.d/zed.rc

and

  • uncomment ZED_EMAIL_ADDR, the value does not matter since we use our own email script, but it is necessary to set a value to make ZED send 'emails'
  • set ZED_EMAIL_PROG to the path of the script, f.ex. /usr/bin/cli2telegram
    • it is important to note that zed does not seem to work if your command needs arguments to run
# this must not be empty!
ZED_EMAIL_ADDR="root"

[...]

ZED_EMAIL_PROG="/usr/bin/cli2telegram"

[...]

# this must not be empty!
ZED_EMAIL_OPTS="#zfs #$(hostname)"

[...]

# If you want to receive email no matter the state of your pool, you’ll want to set:
ZED_NOTIFY_VERBOSE=1

[...]

Since zed will run your scripts as root, if you want to use a config file you have to put it in f.ex. /root/.config/cli2telegram.toml.

Contributing

GitHub is for social coding: if you want to write code, I encourage contributions through pull requests from forks of this repository. Create GitHub tickets for bugs and new features and comment on the ones that you are interested in.

License

cli2telegram by Markus Ressel
Copyright (C) 2018  Markus Ressel

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.

Metadata

Release files for cli2telegram 2.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cli2telegram 2.0.3
File Size Uploaded
cli2telegram-2.0.3.tar.gz 19.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cli2telegram 2.0.3
File Interpreter ABI Platform
cli2telegram-2.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 42.6 kB

Release files / cli2telegram-2.0.3.tar.gz

Download URL cli2telegram-2.0.3.tar.gz
Size 19.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c303867709a8f891ac0a064b42b8141d09b8ef7ae77f46d45f6808e0392225f6
BLAKE2b-256 checksum
How to use checksums
484be135b0403790aead38b81bf5b2c4fe610260ddf5ff32e0ef4ff3056fd81a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / cli2telegram-2.0.3-py3-none-any.whl

Download URL cli2telegram-2.0.3-py3-none-any.whl
Size 23.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
356f60759c5f7778e83d8cd8b003d1d625e141f222516d6a309d3dde706b3358
BLAKE2b-256 checksum
How to use checksums
cf9abf14a954463b2356dfbe1d83cb3d735d9c5280cb3c56d0592d2bcfaff9a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

2.0.3 This release

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page