systemd.login module — python-systemd 236 documentation

python-systemd · man pages · directives python-systemd 236

# systemd.login module

Python interface to the libsystemd-login library.

systemd.login.machine_names() → list

  Returns a list of currently running virtual machines and containers on the system. Wraps sd_get_machine_names(3).

systemd.login.seats() → list

  Returns a list of currently available local seats. Wraps sd_get_seats(3).

systemd.login.sessions() → list

  Returns a list of current login sessions. Wraps sd_get_sessions(3).

systemd.login.uids() → list

  Returns a list of uids of users who currently have login sessions. Wraps sd_get_uids(3).

class systemd.login.Monitor([category]) → ...

  Monitor may be used to monitor login sessions, users, seats, and virtual machines/containers. Monitor provides a file descriptor which can be integrated in an external event loop.

  See sd_login_monitor_new(3) for the details about what can be monitored.

  close() → None

    Free resources allocated by this Monitor object. This method invokes sd_login_monitor_unref(). See sd_login_monitor_unref(3).

  fileno() → int

    Get a file descriptor to poll for events. This method wraps sd_login_monitor_get_fd(3).

  flush() → None

    Reset the wakeup state of the monitor object. This method invokes sd_login_monitor_flush(). See sd_login_monitor_flush(3).

  get_events() → int

    Returns a mask of poll() events to wait for on the file descriptor returned by .fileno().

    See sd_login_monitor_get_events(3) for further discussion.

  get_timeout() → int or None

    Returns a timeout value for usage in poll(), the time since the epoch of clock_gettime(2) in microseconds, or None if no timeout is necessary.

    The return value must be converted to a relative timeout in milliseconds if it is to be used as an argument for poll(). See sd_login_monitor_get_timeout(3) for further discussion.

  get_timeout_ms() → int

    Returns a timeout value suitable for usage in poll(), the value returned by .get_timeout() converted to relative ms, or -1 if no timeout is necessary.

## Example: polling for events

This example shows that session/uid/seat/machine events can be waited for (using e.g. poll). This makes it easy to integrate Monitor in an external event loop:

    >>> import select
    >>> from systemd import login
    >>> m = login.Monitor("machine")
    >>> p = select.poll()
    >>> p.register(m, m.get_events())
    >>> login.machine_names()
    []
    >>> p.poll()
    [(3, 1)]
    >>> login.machine_names()
    ['fedora-25']