通过python启动systemd服务

Max*_*fer 12 python systemd

有没有办法通过python启动/重启systemd服务?

我知道我可以进行系统调用 - 但是我也可以用shell脚本编写这个...

from subprocess import call
call(["systemctl", "restart service"])
Run Code Online (Sandbox Code Playgroud)

我听说systemd有一些python绑定,但据我所见,它们只覆盖了期刊

Cil*_*yan 15

您可以使用systemd的DBus API来调用RestartUnit方法Manager(需要足够的权限,否则它将无法工作)

import dbus
sysbus = dbus.SystemBus()
systemd1 = sysbus.get_object('org.freedesktop.systemd1', '/org/freedesktop/systemd1')
manager = dbus.Interface(systemd1, 'org.freedesktop.systemd1.Manager')
job = manager.RestartUnit('sshd.service', 'fail')
Run Code Online (Sandbox Code Playgroud)