Skip to content

leovp/telegram_notifications

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

System Notifications via Telegram

A couple of scripts for your notification needs.

Basics

The two scripts are almost identical in their purpose: they read text stdin and send you a Telegram message.

telegram_text.sh sends everything as is, except it makes the very first line bold (I found it helpful and pretty).
Example:

cat /etc/motd | ./telegram_text.sh

telegram_image.sh converts text into an image (using a nice looking monospaced font) and sends it as an inline photo. Additionally this script uses commandline arguments as a caption for the image.
Example:

cat /etc/motd | ./telegram_image.sh "motd from $(hostname)"

Prerequisites

  • Create a Telegram bot — you'll need an API_KEY and a CHAT_ID.
  • curl [both scripts] — for sending API requests.
  • netpbm [telegram_image only] — for generating images from text.
  • tempfile [telegram_image only] — comes from debianutils on my system; I hope there are equivalents elsewhere.

Caveats

  • These scripts are not very flexible; hopefully nothing breaks in a foreseeable future.
  • pbmtext, which is part of netpbm package, doesn't support multibyte encodings at all. Moreover, the default monospaced font supports only 7-bit ASCII.
    You have two options:
    • Use only 7-bit ASCII in your notification messages. English locale works excellent.
    • Find and download an 8-bit font (BDF or PBM only) for your encoding of choice, for example KOI8-R.
      Replace pbmtext -builtin fixed with pbmtext -font /path/to/font
  • The scripts are going to try to send messages until success (as reported by curl). So, indefinitely in the worst-case scenario.

Usage examples

smartmontools

  1. Create a link to telegram_text.sh in /etc/smartmontools/run.d:
ln -s /opt/notification-scripts/telegram_text.sh /etc/smartmontools/run.d/10telegram
  1. Make sure you have a "-M" command in /etc/smartd.conf; something like this:
DEVICESCAN -d removable -m root -a -M exec /usr/share/smartmontools/smartd-runner
  1. Now you'll receive warnings from smartd via Telegram!

ZFS Event Daemon

This method is even cooler. We will change a mailer program, so ZED would just send an email as always, but it's going to end up in your Telegram messages.

  1. Open /etc/zfs/zed.d/zed.rc
  2. Set ZED_EMAIL_PROG to the path of your script of choice.
ZED_EMAIL_PROG="/opt/notification-scripts/telegram_image.sh"
  1. Optionally change ZED_EMAIL_OPTS, so that the image is sent with a caption.
ZED_EMAIL_OPTS="#zfs #$(hostname)"

I chose to use hashtags, it really simplifies searching for messages from different hosts and daemons.

About

System Notifications via Telegram

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages