Mini Shell
python-systemd
===============
Python module for native access to the systemd facilities. Functionality
is separated into a number of modules:
- systemd.journal supports sending of structured messages to the journal
and reading journal files,
- systemd.daemon wraps parts of libsystemd useful for writing daemons
and socket activation,
- systemd.id128 provides functions for querying machine and boot identifiers
and a lists of message identifiers provided by systemd,
- systemd.login wraps parts of libsystemd used to query logged in users
and available seats and machines.
Installation
============
This module should be packaged for almost all Linux distributions. Use
On Fedora/RHEL/CentOS
dnf install python-systemd python3-systemd
On Debian/Ubuntu/Mint
apt-get install python-systemd python3-systemd
On openSUSE and SLE
zypper in python-systemd
To build from source
On Fedora 21+ with Python 2:
dnf install git python-pip gcc python-devel systemd-devel
pip install git+https://github.com/systemd/python-systemd.git#egg=systemd
On Fedora 21+ with Python 3:
dnf install git python3-pip gcc python3-devel systemd-devel
pip3 install git+https://github.com/systemd/python-systemd.git#egg=systemd
On Debian or Ubuntu with Python 2:
apt-get install libsystemd-{journal,daemon,login,id128}-dev gcc python-dev pkg-config
On Debian or Ubuntu with Python 3:
apt-get install libsystemd-{journal,daemon,login,id128}-dev gcc python3-dev pkg-config
The project is also available on pypi as `systemd-python`.
Usage
=====
Quick example:
from systemd import journal
journal.send('Hello world')
journal.send('Hello, again, world', FIELD2='Greetings!', FIELD3='Guten tag')
journal.send('Binary message', BINARY=b'\xde\xad\xbe\xef')
There is one required argument -- the message, and additional fields
can be specified as keyword arguments. Following the journald API, all
names are uppercase.
The journald sendv call can also be accessed directly:
from systemd import journal
journal.sendv('MESSAGE=Hello world')
journal.sendv('MESSAGE=Hello, again, world', 'FIELD2=Greetings!',
'FIELD3=Guten tag')
journal.sendv('MESSAGE=Binary message', b'BINARY=\xde\xad\xbe\xef')
The two examples should give the same results in the log.
Notes:
* Unlike the native C version of journald's sd_journal_send(),
printf-style substitution is not supported. Perform any
substitution using Python's % operator or .format() capabilities
first.
* A ValueError is raised if sd_journald_sendv() results in an error.
This might happen if there are no arguments or one of them is
invalid.
Documentation
=============
Online documentation can be found at [freedesktop.org](https://www.freedesktop.org/software/systemd/python-systemd/)
To build it locally run:
make sphinx-html
Or use any other builder, see `man sphinx-build` for a list. The compiled docs will be e.g. in `docs/html`.
Viewing Output
==============
Quick way to view output with all fields as it comes in:
sudo journalctl -f --output=json
Test Builds (for Development)
=============================
python setup.py build_ext -i
python
>>> from systemd import journal
>>> journal.send("Test")
[![Build Status](https://semaphoreci.com/api/v1/projects/42d43c62-f6e5-4fd5-a93a-2b165e6be575/530946/badge.svg)](https://semaphoreci.com/zbyszek/python-systemd)
Zerion Mini Shell 1.0