Autor Thema: Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern  (Gelesen 37702 mal)

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4628
  • Wer anderen eine Bratwurst brät...
    • Buy me a coffee
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #165 am: 06 Mai 2021, 22:03:23 »
Das ist wieder typisch!
Die einzige Konstellation die ich nicht direkt getestet hatte funktioniert natürlich wieder nicht. ;)
Aber eigentlich war mir das vorhin beim Code Review schon fast klar, ich hatte es nur nicht geändert weil ich dachte eventuell doch etwas damit kaputt zu machen.
Nun habe ich, denke ich, die beste Lösung gefunden.
Sobald "serviceGetStatusOnInit" und/oder "serviceStatusInterval" gesetzt ist, wird beim Start von FHEM nun der Status abgerufen. Ab "verbose 4" kommt dann im Log:
$name: get status of service {SERVICENAME} due to startup and/or intervalUnd wenn "serviceStatusInterval" gesetzt ist wird dann das entsprechende Interval wieder ausgeführt.

Bitte nochmal testen ob es nun wie gewünscht funktioniert.

Gruß
Dan
« Letzte Änderung: 07 Mai 2021, 00:11:39 von DeeSPe »
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Offline RockFan

  • Full Member
  • ***
  • Beiträge: 221
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #166 am: 06 Mai 2021, 23:13:41 »
Hallo Dan,

jetzt sieht es gut aus  :)
Beide Services haben nach dem FHEM-Start aktualisiert und der erste Service dann wieder nach 5 Minuten, also so, wie es sein soll.

Danke für die Korrekturen.

Gute Nacht!

Dieter
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4628
  • Wer anderen eine Bratwurst brät...
    • Buy me a coffee
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #167 am: 07 Mai 2021, 00:11:21 »
Danke nochmal für's Testen!
Schön dass es nun klappt wie gewünscht.
Ich checke die Version dann ins SVN ein und sie ist dann ab morgen früh im Update erhältlich.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Offline RockFan

  • Full Member
  • ***
  • Beiträge: 221
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #168 am: 07 Mai 2021, 23:24:47 »
Danke fürs Fixen  ;)

Habe heute Abend ein FHEM-Update gefahren und werde nun über einen längeren Zeitraum beobachten, ob es noch zu Hängern kommt.

Viele Grüße
Dieter
Raspbian (Buster) auf Raspberry Pi 4 /  CUL + RFXTRX + TCM / FS20, FHT 80B, S300TH, Intertechno, DMX, Milight, EnOcean, Homematic, AMAD, Home Connect, MiSmartHome, Yeelight, ...

Offline taskkill

  • Full Member
  • ***
  • Beiträge: 101
  • Ich hab doch nix gemacht....
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #169 am: 15 Januar 2022, 11:16:58 »
Guten Tag, ist es auch irgendwie möglich alle Dienste vom Rpi automatisch erfassen zu lassen und nur den Status anzuzeigen ?
RPI 3B+ mit Raspbian Bullseye auf SSD, aktiver USB-Hub, Fhem (is klar), TI CC2652P, Echo Plus 2te Gen., ESPxxxx, usw.

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4628
  • Wer anderen eine Bratwurst brät...
    • Buy me a coffee
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #170 am: 15 Januar 2022, 16:01:56 »
Guten Tag, ist es auch irgendwie möglich alle Dienste vom Rpi automatisch erfassen zu lassen und nur den Status anzuzeigen ?

Nein.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Offline JensS

  • Hero Member
  • *****
  • Beiträge: 1109
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #171 am: 22 Januar 2022, 10:21:08 »
Das hat jetzt nichts mit dem Modul zu tun aber die Dienste, welche in systemd hinterlegt sind, kannst du auch auf Linuxebene mit "systemctl list-units" abfragen. Achtung: für die Dauer der Abfrage ist FHEM blockiert! Hier mal ein Beipiel-at auf ein servicedummy-Device:defmod ServiceStatus_at at +*00:01:00 {\
my $linuxreturn = qx(systemctl list-units | grep .service);;\
my @Services = split(/\n/,$linuxreturn);;\
foreach (@Services){\
my @ServiceReading = split(/ +/,$_,6);;\
fhem("setreading servicedummy $ServiceReading[1] $ServiceReading[4]")};;\
}

Gruß Jens
« Letzte Änderung: 22 Januar 2022, 10:49:56 von JensS »
Debian auf APU2C4, HM-CFG-USB2, SIGNALduino, HM-ES-PMSw1-Pl, AB440S, AB440R, TFA 30.3121, TFA 30.3125, ITS-150, PIR-5000, configurable Firmata USB & LAN, 1-wire: DS-18B20, DS-18S20, DS-2408, DS-2413, diverse I2C-Komponenten, zigbee2mqtt, ESPEasy etc.

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8689
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #172 am: 22 Januar 2022, 14:14:24 »
Deshalb doch besser in ein externes Script auslagern und das "Non-Blocking" aufrufen?
Mußt Dir dann nur überlegen, wie Du die Daten in FHEM bekommst (telnet, Web, MQTT o.Ä.)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html
Zustimmung Zustimmung x 1 Liste anzeigen

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1643
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #173 am: 29 April 2022, 13:08:04 »
Hallo,

habe mein debian System (AMD) nun auf bullseye aktualisiert und habe jetzt mit dem serviced - Modul Probleme (Auszug aus log/fhem-04-29.log nach der Abfrage des status eines laufenden Dienstes über das entsprechende serviced - Objekt):
sudo: Ein Passwort ist notwendig
sudo: Zum Lesen des Passworts ist ein Terminal erforderlich; verwenden Sie entweder die Option -S, um aus der Standardeingabe zu lesen oder richten Sie das Askpass-Hilfsprogramm ein
sudo: Ein Passwort ist notwendig

In der /etc/sudoers steht folgendes:
# Cmnd alias specification
Cmnd_Alias FHEM_CMDS = /bin/systemctl *, /usr/sbin/service *
...

fhem ALL=(ALL:ALL) NOPASSWD: FHEM_CMDS
Gibt man in ein TTerminal als user fhem folgendes ein, so kommt:
fhem@Speicherknecht:/media/public$ systemctl restart dnsmasq
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Legitimierung ist zum Neustarten von »dnsmasq.service« notwendig.
Authenticating as: Elektrolurch Müller,,, (Elektrolurch)
Password:

Sieht jemand, was da nicht stimmt?
Warum werden die Anweisungen in der /etc/sudoers anscheinend ignoriert?

Merkwürdig ist, dass es bis vor dem update funktionierte.
Ein zeites System mit ARM und debian bullseye funktioniert weiterhin mit den gleichen Anweisungen in der /etc/sudoers

Interne Daten von dnsmasq:
DEF
dnsmasq
FUUID
606ad19e-f33f-c8c3-d89f-7beee8fcb1f32b75
NAME
dnsmasq
NOTIFYDEV
global
NR
882
NTFY_ORDER
50-dnsmasq
SERVICENAME
dnsmasq
STATE
error
TYPE
serviced
VERSION
1.2.8
Readings
error
sudo: Zum Lesen des Passworts ist ein Terminal erforderlich; verwenden Sie entweder die Option -S, um aus der Standardeingabe zu lesen oder richten Sie das Askpass-Hilfsprogramm ein sudo: Ein Passwort ist notwendig
2022-04-29 13:03:53
state
error
2022-04-29 13:03:53
status
Active: active (running) since Thu 2022-04-28 23:59:14 CEST; 63ms ago
2022-04-28 23:59:14
attr
 dnsmasq
room
 
Attributes
alias
dns
deleteattr
cmdIcon
restart:rc_REPEAT stop:rc_STOP status:rc_INFO start:rc_PLAY
deleteattr
devStateIcon
Initialized|status:light_question error|failed:light_exclamation running:audio_play:stop stopped:audio_stop:start stopping:audio_stop .*starting:audio_repeat
deleteattr
genericDeviceType
switch
deleteattr
homebridgeMapping
On=state,valueOff=/stopped|failed/,cmdOff=stop,cmdOn=start StatusJammed=state,values=/error|failed/:JAMMED;/.*/:NOT_JAMMED
deleteattr
icon
hue_room_garage
deleteattr
serviceInitd
1
deleteattr
webCmd
start:restart:stop:status
deleteattr



Elektrolourch

« Letzte Änderung: 29 April 2022, 13:46:31 von Elektrolurch »
configDB und Windows befreite Zone!

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8689
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #174 am: 29 April 2022, 16:27:11 »
1, Arbeite besser mit /etc/sudoers.d/<toller Dateiname>  und lass die Original sudoers in Ruhe
2. Wie bearbeitest Du die sudoers?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1643
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #175 am: 29 April 2022, 17:40:21 »
DAnke für den Tippp:

1. Editieren mit Syntaxcheck, wie üblich
2. Auslagerung der zwei Zeilen für fhem in eine eigene Datei in das dir sudoers.d hat nichts geändert.
3. Syntax von sudoers schein ok zu sein.
fhem@Speicherknecht:/media/public$ systemctl restart dnsmasq
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Legitimierung ist zum Neustarten von »dnsmasq.service« notwendig.
Das scheint das Problem zu sein: "FOR org.freedesktop.systemd1.manage-units ".
Woher kommt das und wieso ist es anscheind auf der anderen Installation kein Problem?
Das Modul "serviced" ruft ja den selben Befehl auf....

Elektrolurch
configDB und Windows befreite Zone!

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8689
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #176 am: 29 April 2022, 17:50:03 »
Kannst Du bitte prüfen:
1. Stimmt der Pfad?
z.B. mit "whereis  systemctl"
Bei mir spuckt er einen anderen Pfad auf, allerdings aktuell auch kein RasPi

2. Wenn Du alles nach dem "," Weg lässt, also nur systemctl drin steht, wie sieht es dann aus?

3. Wenn Du das "*" weg lässt.....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1643
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #177 am: 30 April 2022, 13:03:33 »
Hallo,

1. der Pfad hatte sich tatsächlich von buulseye ARM /binsystemctl auf bullseye AMD geändert in /usr/bin/systemctl.
Habe das angepasst und  auch nach einem Neustart des systems funktioniert es immer noch NICHT.
2. Auch das habe ich ausprobiert, nur eine Anweisung und auch ohne *
Geht leider auch nicht.

Als angemeldeter user 'fhem' kommt immer über die Kommandozeile bei dem AMD - System:
fhem@Speicherknecht:/media/public$ /usr/bin/systemctl restart dnsmasq
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Legitimierung ist zum Neustarten von »dnsmasq.service« notwendig.
Gebe ich dann das Passwort für den Nutzer 'Elektrolurch' (nicht fhem!!!!) ein, wird der Befehl ausgeführt.
Auf dem ARM-System funktioniert es ohne Rückfrage und Passwort Eingabe, wie es bei der Anweisung NOPASSWD in der sudoers - Datei auch zu erwarten wäre.
Was ist das überhaupt für ein Dienst (AUTHENTICATING FOR org.freedesktop.systemd1...), der diese Meldung erzeugt.
Auf dem ARM habe ich so etwas noch nicht gesehen.

Elektrolurch
configDB und Windows befreite Zone!

Offline Wernieman

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8689
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #178 am: 30 April 2022, 14:03:38 »
Wenn Du schon sudo willst, warum rufst Du systemctl dann ohne sudo auf?

Richtig also:
sudo /usr/bin/systemctl restart dnsmasq
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1643
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #179 am: 01 Mai 2022, 12:10:09 »
Sorry, habe ich dann auch gemerkt:
sudo /usr/bin/systemctl restart dnsmasq

Als eingeloggter user fhem kommt die Mitteilung jetzt auch nicht mehr.
Aber über das serviced - Modul geht es lokal immer noch nicht....
Ob da vielleicht der andere Pfad zu der "systemctl eine Rolle spielt?
Die Meldungen kommen übrigens aus dem "policy kit" (polkit) Modul, was anscheinend erst mit bullseye dazu gekommen ist.
siehe hierzu auch die Erklärungen unter:
https://unix.stackexchange.com/questions/650826/why-is-this-error-interactive-authentication-required-popping-up
Eigentlich steht da auch, dass ein Eintrag in der sudoers mit NOPASSWD ausreichend sein sollte.

Und eine mögliche Lösung mit dem polkit (ohne Eintrag NOPASWWD in der sudoers) :
https://unix.stackexchange.com/questions/606452/allowing-user-to-run-systemctl-systemd-services-without-password/606476#606476

Warum geht das starten / stoppen von Diensten über das Modul serviced remote auf der ARM - maschine?
Weil der service "polkit" nicht startet.
An der eingetragene Stelle für den Dienst fehlt das binary....
/lib/systemd/system/polkit.service:
[Unit]
Description=Authorization Manager
Documentation=man:polkit(8)

[Service]
Type=dbus
BusName=org.freedesktop.PolicyKit1
ExecStart=/usr/lib/policykit-1/polkitd --no-debug
Da gibt es nur eine Datei: polkit-agent-helper-1


Elektrolurch


configDB und Windows befreite Zone!