跳转到主要内容

将命令后台执行并发送结果电子邮件

项目描述

Project Status: Active - The project has reached a stable, usable state and is being actively developed. CI Status https://codecov.io/gh/jwodder/daemail/branch/master/graph/badge.svg https://img.shields.io/pypi/pyversions/daemail.svg MIT License

GitHub | PyPI | 问题 | 变更日志

daemail(发音为“DEE-mayl”,类似于“e-mail”但带D)是一个Python脚本,基于 python-daemon 构建,用于在后台运行通常在前景运行的命令,并在完成后通过电子邮件发送其输出(默认情况下为组合的stdout和stderr)。

安装

daemail 需要 Python 3.6 或更高版本。只需使用 Python 3 的 pip 来安装 daemail 及其依赖项

python3 -m pip install daemail

用法

daemail [<options>] <command> [<arg> ...]

daemail 在后台以给定的参数运行 command,一旦命令执行完成,就会发送一封电子邮件。电子邮件的发送由 outgoing 库执行,因此在使用 daemail 之前,必须创建一个包含发送电子邮件设置的 outgoing 配置文件

选项

-c FILE, --config FILE

FILE 读取 outgoing 库的发送配置;默认为 outgoing 的默认配置文件

-C DIR, --chdir DIR

在成为守护进程后但在运行命令之前切换到 DIR;默认为当前目录

-D MBOX, --dead-letter MBOX

如果在尝试发送时发生错误,将电子邮件(包括错误描述)附加到文件 MBOX;默认为 dead.letter。如果文件已存在,则它必须是一个有效的 mbox 文件。

-e ENCODING, --encoding ENCODING

期望命令的 stdout(如果 --split 不可用,则包括 stderr)以给定的编码;默认为 Python 的 locale.getpreferredencoding 返回的首选编码。如果解码失败,输出将被附加到电子邮件作为名为“stdout”的 application/octet-stream 文件。

当也给出 --mime-type--stdout-filename 时,此选项除了设置 --stderr-encoding 的默认值外没有其他效果。

-E ENCODING, --stderr-encoding ENCODING

期望命令的 stderr 以给定的编码;默认为通过 --encoding 或其默认值指定的值。如果解码失败,stderr 输出将被附加到电子邮件作为名为“stderr”的 application/octet-stream 文件。

此选项仅在给出 --split 时才有效,无论是隐式还是显式。

--foreground, --fg

在后台而不是作为守护进程运行所有内容。注意,命令输出将被捕获而不是显示。

-f ADDRESS, --from ADDRESS, --from-addr ADDRESS

设置电子邮件的 From: 地址。地址可以是“address@example.com”或“Real Name <address@example.com>”的形式。如果没有指定,daemail 将不会设置 From: 报头,并期望邮件命令或 SMTP 服务器来设置它。

-F, --failure-only

只有当命令运行失败或以非零状态退出时才发送电子邮件

-l LOGFILE, --logfile LOGFILE

如果守护进程化后发生意外且无法处理的致命错误,将报告追加到 LOGFILE;默认为 daemail.log

此类错误是程序缺陷;请报告它!

-M MIME-TYPE--mime-type MIME-TYPE--mime MIME-TYPE

将命令的标准输出附加到电子邮件中,作为具有指定MIME类型的内联附件。MIME类型可以包含参数,例如:--mime-type "text/html; charset=utf-16"。如果不提供--stdout-filename,则附件命名为“stdout”。暗示--split

-n--nonempty

如果命令成功退出且命令的stdout和stderr均为空或未捕获,则不发送电子邮件

--no-stdout

不捕获命令的stdout;暗示--split

--no-stderr

不捕获命令的stderr;暗示--split

-S--split

分别捕获命令的stdout和stderr,而不是作为一个单一的数据流

--stdout-filename FILENAME

将命令的标准输出附加到电子邮件中,作为具有给定文件名的内联附件。如果不提供--mime-type,则附件的MIME类型从文件扩展名推断,对于未知扩展名则回退到application/octet-stream。暗示--split

-t ADDRESS--to ADDRESS--to-addr ADDRESS

设置电子邮件的收件人。地址可以是“address@example.com”或“Real Name <address@example.com>”的形式。

此选项是必需的。为了指定多个收件人,可以多次给出。

-Z--utc

以UTC时间显示开始和结束时间,而不是本地时间

注意事项

  • 输入不能被管道传递到命令中,因为当守护进程化时标准输入被关闭。如果您确实需要通过标准输入传递数据,请运行shell,例如。

    daemail bash -c 'command < file'

    daemail bash -c 'command | other-command'

项目详情


下载文件

为您的平台下载文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

daemail-0.7.0.tar.gz (24.3 kB 查看哈希)

上传时间

构建分布

daemail-0.7.0-py3-none-any.whl (13.8 kB 查看哈希)

上传时间 Python 3

由以下机构支持