Skip to main content

a Pathetic Python Pipe Mail sender to send terminal outputs by mail

Project description

p3mail - Send terminal outputs by mail

p3mail (Pathetic Python Pipe Mail) allows you to send terminal outputs by mail

Basically something like this

./long_running_command_printing_logs | p3mail "My mail's subject"

Since it is highly probable that you are both the sender and receiver, these latter are pre-defined in a config file (see below).

Important note Remember that only stdout is captured when using pipes. You may want to redirect stderr to stdout to also catch errors. For example

./my_command_printing_errors 2>&1 | p3mail "My mail's subject"

Note: the order of stdout and stderr outputs is not preserved :( See: https://hisham.hm/2016/11/24/fun-hack-to-redirect-stdout-and-stderr-in-order/

Install

pip install p3mail

Usage

Using config file

Copy the config_example file to $HOME/.config/p3mail/config and start using p3mail ! See the examples below.

Using command line

usage: p3mail [-h] [--to TO] [--from DEST] [--config CONFIG] subject

positional arguments:
  subject          The subject of the mail

optional arguments:
  -h, --help       show this help message and exit
  --to TO          The receiver's address. If not provided, it will look at
                   the config file
  --from DEST      The sender's address. If not provided, it will look at the
                   config file
  --config CONFIG  Specify a custom location for the config file

Examples

Send backup logs by mail

my_backup_program | p3mail "Backup for `hostname` on `date`"

Cronjob notification

If your cron job is ran by root p3mail will look at /home/root/.config/p3mail/config which is not something you might want. You can specify the config file location with:

echo "Hello msg body" | p3mail --config /home/alice/.config/p3mail/config "My subject"

Tip: you can put an alias in your .bashrc to avoid specifying this file everytime like this:

p3mail="p3mail --config /home/alice/.config/p3mail/config"

Motivation

I coded this application because it is always painful (at least for me) to make the built-in mail service work (or whatever it is called on Linux distributions). Here are some other reasons:

  1. You don't always have the rights to configure this mail service (e.g. on a remote server)
  2. sendmail, mail or other mail sender command line tools are not always installed or configured on the machines you are using
  3. p3mail only requires that Python 3 is installed
  4. p3mail does not requires sudo rights
  5. p3mail needs a reason to live

Security concerns

You may not want to hardcode your smtp user or your smtp password in a config file. I understand that so p3mail allows you to read your credentials from environment variables.

  1. In your config set as an empty value for either/both SmtpUser/SmtpPass e.g. SmtpPass =
  2. Then call p3mail like this:
export SMTP_USER=alice
export SMTP_PASS=super_secr3t_passw0rd

./my_verbose_script | p3mail "Verbose script report"

TODO

  • Add Gmail oauth support

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

p3mail-0.1.1.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

p3mail-0.1.1-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file p3mail-0.1.1.tar.gz.

File metadata

  • Download URL: p3mail-0.1.1.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for p3mail-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d2787cf6776235cba0a9f058047ac766b9855c5a3ce13f3f920dd0a7cac15a3d
MD5 4a88485a6297c73efb76ae1be4dc3dff
BLAKE2b-256 7877847030e3a287eee80e8c9a0302a53ec95374e8f058eb18df26587bb851c5

See more details on using hashes here.

File details

Details for the file p3mail-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for p3mail-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ca7989561583e2ef4e75c646744a4f795f7e0a5e4c8c11fe593b765508af9fde
MD5 bae5dd1ff8bce48e92157dd0b9af503f
BLAKE2b-256 7bd757e285a2f935516b4a63d0bd223b8746f768b88aae12b1695fbdf5ff58ca

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page