Я работаю над приложением python, которому нужно получить параметр NTPSynchronized
из системного времени. Я также хотел бы иметь возможность запускать и останавливать службу NTP с помощью метода SetNTP
.
Для связи с синхронизацией по времени по шине d-Bus я использовал это в качестве ссылки: https://www.freedesktop.org/wiki/Software/systemd/timedated/
Раньше я работал с dbus-python, но с тех пор узнал, что эта библиотека устарела. Я попробовал пакет dbus_next, но он не поддерживает Python 3.5, который мне нужен.
Я наткнулся на пакет pystemd, но я не уверен, что его можно использовать для того, что я хочу. Единственная документация, которую мне удалось найти, - это пример (https://github.com/facebookincubator/pystemd),, но я не могу понять, как использовать это для работы с системным временем.
Вот код, который у меня работает, который работаетс dbus-python:
import dbus
BUS_NAME = 'org.freedesktop.timedate1`
IFACE = 'org.freedesktop.timedate1`
bus = dbus.SystemBus()
timedate_obj = bus.get_object(BUS_NAME, '/org/freedesktop/timedate1')
# Get synchronization value
is_sync = timedate_obj.Get(BUS_NAME, 'NTPSynchronized', dbus_interface=dbus.PROPERTIES_IFACE)
# Turn off NTP
timedate_obj.SetNTP(False,False, dbus_interface=IFACE)
Вот что я имею до сих пор с pystemd, но я не думаю, что я получаю к нему правильный путь:
from pystemd.systemd1 import Unit
unit = Unit(b'systemd-timesyncd.service')
unit.load()
# Try to access properties
prop = unit.Properties
prop.NTPSynchronized
Запуск этогоЯ получаю:
Ошибка атрибута: у объекта 'SDInterface' нет атрибута 'NTPSynchronized'
У меня такое ощущение, что либо введенная мной служба неверна, либоЯ получаю доступ к свойствам неправильно, или даже оба неверны.
Любая помощь или совет приветствуется.