Seite 1 von 1

Mit Python einen service status abfragen

Verfasst: Sonntag 6. März 2016, 14:20
von HightronicDesign
Hallo Leute,

wie kann man mit einem Python Script einen Service status abfragen ?

Beispiel: Ich möchte wissen ob hostapd aktiv oder inaktiv ist.


Vielen Dank

Re: Mit Python einen service status abfragen

Verfasst: Sonntag 6. März 2016, 16:25
von Dav1d
Nach einer API suchen, die dir den Status zurück gibt (ich glaube systemd hat ein dbus-Interface), falls es keine API gibt kann man auch mit `subprocess` ein externes Programm (z.B. systemctl) starten und das Ergebnis auswerten.

Re: Mit Python einen service status abfragen

Verfasst: Sonntag 6. März 2016, 17:24
von BlackJack
@HightronicDesign: Wie Dav1d schrieb hat `systemd` eine DBus-API. Es gibt mit `python-systemd` eine API die darauf aufbaut.

Code: Alles auswählen

#!/usr/bin/env python
# coding: utf8
from __future__ import absolute_import, division, print_function
from systemd.manager import Manager


def main():
    manager = Manager()
    unit = manager.get_unit('mediacenter.service')
    is_active = unit.properties.ActiveState == 'active'
    print(is_active)


if __name__ == '__main__':
    main()
Anstelle des `mediacenter.service` mit dem ich das auf meinem OSMC-Raspi getestet habe, müsstest Du da den Service-Namen eintragen den Du testen möchtest.

Re: Mit Python einen service status abfragen

Verfasst: Montag 7. März 2016, 11:10
von HightronicDesign
Hmm verstehe.

Ich habe es gestern noch spontan mit der abfrage von systemctl gemacht.

Allerdings frage ich momentan den status in einer while1 loop ab weil ich ein event starten stoppen möchte je nach status, was ich noch nicht auf performance geprüft habe.

Re: Mit Python einen service status abfragen

Verfasst: Montag 7. März 2016, 12:28
von DasIch
HightronicDesign hat geschrieben:Allerdings frage ich momentan den status in einer while1 loop ab weil ich ein event starten stoppen möchte je nach status, was ich noch nicht auf performance geprüft habe.
Das klingt alles andere als elegant. Bietet Systemd nichts an um über einen gestarteten Service informiert zu werden?

Re: Mit Python einen service status abfragen

Verfasst: Montag 7. März 2016, 12:53
von HightronicDesign
Über den technischen Hintergrund von systemd hab ich noch nicht viel gesucht, daher kann ich selbst fürs erste nicht sagen ob sich in dieser Richtung irgendwas anbietet.