dwatch


Namedwatch JSON
Version 0.2.0 PyPI version JSON
download
home_pagehttps://github.com/IngoMeyer441/dwatch
SummaryA tool to watch command output for differences and send notifications.
upload_time2023-06-12 11:05:25
maintainer
docs_urlNone
authorIngo Meyer
requires_python~=3.6
licenseMIT
keywords administration monitoring
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # dwatch

## Overview

![example_report](https://raw.githubusercontent.com/IngoMeyer441/dwatch/master/example_report.png)

dwatch (*diff watch*) is a tool to monitor the output of a given command and notify the user on changes by sending an
email with a diff view.

## Installation

dwatch is available on PyPI and can be installed with `pip`:

```bash
python3 -m pip install dwatch
```

At least Python 3.6 is required.

If you run an Arch-based system, you can also install `dwatch` from the
[AUR](https://aur.archlinux.org/packages/dwatch/):

```bash
yay -S dwatch
```

You can also download self-contained executables (no Python installation required) for Linux x64 and macOS x64 from the
[releases page](https://github.com/IngoMeyer441/dwatch/releases).

## Usage

By default, dwatch runs a commmand passed on the command line every 60 seconds and notifies the user on any changes. You
can run a first test with:

```bash
dwatch -i 2 --stdout "date"
```

This runs the `date` command every 2 seconds and prints the output differences to stdout.

Pass the `--run-once` option to run one check, print a diff if necessary and exit. The diff is created against the
output from the previous run (command outputs are stored in the file `~/.dwatch_command_output.json`). This is
especially useful in cron jobs.

Without `--stdout` the diff output is sent as an HTML email. By default, dwatch uses the `sendmail` tool for this, which
is available if a local email server like Postfix or Exim is installed or if a simple mail forwarder like
[ssmtp](https://packages.debian.org/stable/ssmtp) is present. As an alternative, dwatch supports direct communication
with a mail server with Python's builtin [smtplib](https://docs.python.org/3/library/smtplib.html). This can be used if
no email server is installed locally. In either case, run

Use the `--description` option with a text argument to add a description to the diff report and the subject field of
emails. This can be useful to distinguish different commands.

```bash
dwatch --write-default-config
```

to create a default configuration file at `~/.dwatchrc`. Open the file with a text editor and configure a sender
`from_address` and receiver `to_address` in the `[mail]` section:

```text
[mail]
backend = sendmail
server = mail.example.com
login_user = jane.doe
login_password = xxx
encryption = starttls
from_address = dwatch-report@example.com
to_addresses = admin@example.com
```

Change `sendmail` to `smtplib` to use an arbitrary email provider and set the server address, the login credentials and
the encryption (`none`, `starttls` or `ssl`). If `none` is chosen, no login credentials are sent for security reasons.
This can only be used for very simple mail server setups.

## Configuration

These options can be configured in the file `~/.dwatchrc`:

- `[general]` section:

  - `verbosity`: The logging level of the application. Can be one of `quiet`, `error`, `warn`, `verbose` or `debug`.

- `[mail]` section:

  - `backend`: `sendmail` to use the local `sendmail` command or `smtplib` to connect to an arbitrary email server with
    the smtp protocol.
  - `server`: The mail server to use. This field is ignored if the `sendmail` backend is chosen.
  - `login_user`: The login name for the mail server. This field is ignored if the `sendmail` backend is chosen.
  - `login_password`: The login password for the mail server. This field is ignored if the `sendmail` backend is chosen.
  - `encryption`: The encryption to use to connect to the mail server, can be `none` (not recommended!), `starttls` or
    `ssl`. This field is ignored if the `sendmail` backend is chosen. If `none` is chosen, no login credentials are sent
    for security reasons.
  - `from_address`: The from address in the email envelope. Many providers do not support to change the from address and
    overwrite this with your actual mail address.
  - `to_address`: The recipient address.

- `[watch]` section:

  - `interval`: The time interval in seconds between runs of the given command.
  - `run_once`: If set to `True`, the command will only be run once the program exits. This is intended to be used with
    cron jobs.
  - `shell`: Run the given command in a subshell. This is useful to allow shell patterns in a command like pipes (for
    example `command | grep pattern`).

## Command line options

```text
usage: dwatch [-h] [-d DESCRIPTION] [-i INTERVAL] [-o | -O] [-s | -S]
              [--stdout] [-V] [-w] [-q | --error | --warn | -v | --debug]
              [command]

dwatch is a tool for watching command output for changes and notifiying the
user. Default values for command line options are taken from the config file
at "~/.dwatchrc"

positional arguments:
  command               the command to watch

options:
  -h, --help            show this help message and exit
  -d DESCRIPTION, --description DESCRIPTION
                        add a description which is added to the diff output
                        and used in the e-mail subject
  -i INTERVAL, --interval INTERVAL
                        set the interval for the watched command (default:
                        "60.0")
  -o, --run-once        run the given command once and exit (default: "False")
  -O, --no-run-once     don't run the given command once and exit (default:
                        "True")
  -s, --shell           run the given command in a shell subprocess (default:
                        "False")
  -S, --no-shell        don't run the given command in a shell subprocess
                        (default: "True")
  --stdout              print the diff on stdout, do not send a mail
  -V, --version         print the version number and exit
  -w, --write-default-config
                        create a configuration file with default values
                        (config filepath: "~/.dwatchrc")
  -q, --quiet           be quiet (default: "False")
  --error               print error messages (default: "False")
  --warn                print warning and error messages (default: "False")
  -v, --verbose         be verbose (default: "True")
  --debug               print debug messages (default: "False")
```

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/IngoMeyer441/dwatch",
    "name": "dwatch",
    "maintainer": "",
    "docs_url": null,
    "requires_python": "~=3.6",
    "maintainer_email": "",
    "keywords": "administration,monitoring",
    "author": "Ingo Meyer",
    "author_email": "i.meyer@fz-juelich.de",
    "download_url": "https://files.pythonhosted.org/packages/a0/98/78c09b986706004a302621426c4c3f0fc9adb86bf2b75e46c0eb81be1ebc/dwatch-0.2.0.tar.gz",
    "platform": null,
    "description": "# dwatch\n\n## Overview\n\n![example_report](https://raw.githubusercontent.com/IngoMeyer441/dwatch/master/example_report.png)\n\ndwatch (*diff watch*) is a tool to monitor the output of a given command and notify the user on changes by sending an\nemail with a diff view.\n\n## Installation\n\ndwatch is available on PyPI and can be installed with `pip`:\n\n```bash\npython3 -m pip install dwatch\n```\n\nAt least Python 3.6 is required.\n\nIf you run an Arch-based system, you can also install `dwatch` from the\n[AUR](https://aur.archlinux.org/packages/dwatch/):\n\n```bash\nyay -S dwatch\n```\n\nYou can also download self-contained executables (no Python installation required) for Linux x64 and macOS x64 from the\n[releases page](https://github.com/IngoMeyer441/dwatch/releases).\n\n## Usage\n\nBy default, dwatch runs a commmand passed on the command line every 60 seconds and notifies the user on any changes. You\ncan run a first test with:\n\n```bash\ndwatch -i 2 --stdout \"date\"\n```\n\nThis runs the `date` command every 2 seconds and prints the output differences to stdout.\n\nPass the `--run-once` option to run one check, print a diff if necessary and exit. The diff is created against the\noutput from the previous run (command outputs are stored in the file `~/.dwatch_command_output.json`). This is\nespecially useful in cron jobs.\n\nWithout `--stdout` the diff output is sent as an HTML email. By default, dwatch uses the `sendmail` tool for this, which\nis available if a local email server like Postfix or Exim is installed or if a simple mail forwarder like\n[ssmtp](https://packages.debian.org/stable/ssmtp) is present. As an alternative, dwatch supports direct communication\nwith a mail server with Python's builtin [smtplib](https://docs.python.org/3/library/smtplib.html). This can be used if\nno email server is installed locally. In either case, run\n\nUse the `--description` option with a text argument to add a description to the diff report and the subject field of\nemails. This can be useful to distinguish different commands.\n\n```bash\ndwatch --write-default-config\n```\n\nto create a default configuration file at `~/.dwatchrc`. Open the file with a text editor and configure a sender\n`from_address` and receiver `to_address` in the `[mail]` section:\n\n```text\n[mail]\nbackend = sendmail\nserver = mail.example.com\nlogin_user = jane.doe\nlogin_password = xxx\nencryption = starttls\nfrom_address = dwatch-report@example.com\nto_addresses = admin@example.com\n```\n\nChange `sendmail` to `smtplib` to use an arbitrary email provider and set the server address, the login credentials and\nthe encryption (`none`, `starttls` or `ssl`). If `none` is chosen, no login credentials are sent for security reasons.\nThis can only be used for very simple mail server setups.\n\n## Configuration\n\nThese options can be configured in the file `~/.dwatchrc`:\n\n- `[general]` section:\n\n  - `verbosity`: The logging level of the application. Can be one of `quiet`, `error`, `warn`, `verbose` or `debug`.\n\n- `[mail]` section:\n\n  - `backend`: `sendmail` to use the local `sendmail` command or `smtplib` to connect to an arbitrary email server with\n    the smtp protocol.\n  - `server`: The mail server to use. This field is ignored if the `sendmail` backend is chosen.\n  - `login_user`: The login name for the mail server. This field is ignored if the `sendmail` backend is chosen.\n  - `login_password`: The login password for the mail server. This field is ignored if the `sendmail` backend is chosen.\n  - `encryption`: The encryption to use to connect to the mail server, can be `none` (not recommended!), `starttls` or\n    `ssl`. This field is ignored if the `sendmail` backend is chosen. If `none` is chosen, no login credentials are sent\n    for security reasons.\n  - `from_address`: The from address in the email envelope. Many providers do not support to change the from address and\n    overwrite this with your actual mail address.\n  - `to_address`: The recipient address.\n\n- `[watch]` section:\n\n  - `interval`: The time interval in seconds between runs of the given command.\n  - `run_once`: If set to `True`, the command will only be run once the program exits. This is intended to be used with\n    cron jobs.\n  - `shell`: Run the given command in a subshell. This is useful to allow shell patterns in a command like pipes (for\n    example `command | grep pattern`).\n\n## Command line options\n\n```text\nusage: dwatch [-h] [-d DESCRIPTION] [-i INTERVAL] [-o | -O] [-s | -S]\n              [--stdout] [-V] [-w] [-q | --error | --warn | -v | --debug]\n              [command]\n\ndwatch is a tool for watching command output for changes and notifiying the\nuser. Default values for command line options are taken from the config file\nat \"~/.dwatchrc\"\n\npositional arguments:\n  command               the command to watch\n\noptions:\n  -h, --help            show this help message and exit\n  -d DESCRIPTION, --description DESCRIPTION\n                        add a description which is added to the diff output\n                        and used in the e-mail subject\n  -i INTERVAL, --interval INTERVAL\n                        set the interval for the watched command (default:\n                        \"60.0\")\n  -o, --run-once        run the given command once and exit (default: \"False\")\n  -O, --no-run-once     don't run the given command once and exit (default:\n                        \"True\")\n  -s, --shell           run the given command in a shell subprocess (default:\n                        \"False\")\n  -S, --no-shell        don't run the given command in a shell subprocess\n                        (default: \"True\")\n  --stdout              print the diff on stdout, do not send a mail\n  -V, --version         print the version number and exit\n  -w, --write-default-config\n                        create a configuration file with default values\n                        (config filepath: \"~/.dwatchrc\")\n  -q, --quiet           be quiet (default: \"False\")\n  --error               print error messages (default: \"False\")\n  --warn                print warning and error messages (default: \"False\")\n  -v, --verbose         be verbose (default: \"True\")\n  --debug               print debug messages (default: \"False\")\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A tool to watch command output for differences and send notifications.",
    "version": "0.2.0",
    "project_urls": {
        "Homepage": "https://github.com/IngoMeyer441/dwatch"
    },
    "split_keywords": [
        "administration",
        "monitoring"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "34b21626db3a0e707255df39b379caab4ed353c95228c7fd2274627bcf90558a",
                "md5": "18ede4fb4a968f9dd01a6b336a13ccca",
                "sha256": "6dc8d2f39c643e13ea17b7db8eaf38087f2099984753ee0f8fc73ae0b2aa683e"
            },
            "downloads": -1,
            "filename": "dwatch-0.2.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "18ede4fb4a968f9dd01a6b336a13ccca",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "~=3.6",
            "size": 13651,
            "upload_time": "2023-06-12T11:05:23",
            "upload_time_iso_8601": "2023-06-12T11:05:23.310530Z",
            "url": "https://files.pythonhosted.org/packages/34/b2/1626db3a0e707255df39b379caab4ed353c95228c7fd2274627bcf90558a/dwatch-0.2.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a09878c09b986706004a302621426c4c3f0fc9adb86bf2b75e46c0eb81be1ebc",
                "md5": "f6f943858c0072877493b9689a9d7f55",
                "sha256": "58fd293dbd648b7babb252ee29443b4dccf2705d5e6701b8217d2a7f382ba724"
            },
            "downloads": -1,
            "filename": "dwatch-0.2.0.tar.gz",
            "has_sig": false,
            "md5_digest": "f6f943858c0072877493b9689a9d7f55",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "~=3.6",
            "size": 14349,
            "upload_time": "2023-06-12T11:05:25",
            "upload_time_iso_8601": "2023-06-12T11:05:25.123579Z",
            "url": "https://files.pythonhosted.org/packages/a0/98/78c09b986706004a302621426c4c3f0fc9adb86bf2b75e46c0eb81be1ebc/dwatch-0.2.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2023-06-12 11:05:25",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "IngoMeyer441",
    "github_project": "dwatch",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "dwatch"
}
        
Elapsed time: 0.08093s