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

Offline Elektrolurch

  • Hero Member
  • *****
  • Beiträge: 1578
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #120 am: 07 Februar 2021, 11:53:22 »
Hallo,

Cmnd_Alias FHEM_CMDS = /bin/systemctl *, /usr/sbin/service *
Damit klappt der remote - start von fhem.

Bei openvpn haben sich die Start-Skripte geändert:
Server:
• Place your server configuration file in /etc/openvpn/server
• Use the openvpn-server@.service like so:
$ sudo systemctl start openvpn-server@{Server-config}
Replace {Server-config} with the name of your config file without the .conf


Note:
• openvpn@.service is deprecated.
• openvpn.service is obsoleted. (This is only used for backward compatibility)

Wenn ich mich nun auf dem Server als fhem anmelde und folgendes eingebe:
ssh fhem@Kellergeist sudo systemctl start openvpn-server@server
klappt das ohne Probleme

Aber mit dem serviced - Opbjekt in fhem nicht:
set openvpn start
kommt im log:
error           sudo: Kein TTY vorhanden und kein »askpass«-Programm angegeben

Merkwürdig: Der Server, auf dem fhem und damit serviced läuft, ist auf deutsch eingestellt.
Der, auf dem openvpn-server läuft, auf englisch.
Da der ssh - Befehl solo (s.o.) funktioniert, aber nicht von fhem aus....
[gelöst]
Das Modul hat mit dem @server ein Problem, so dass kein login auf dem remote - Server erfolgt, d.h. das fhem@Kellergeist in der def wird ignoriert.
Lögung:
Attribut serviceLogin mit fhem@Kellergeist
setzen.

Elektrolurch

« Letzte Änderung: 07 Februar 2021, 12:19:59 von Elektrolurch »
configDB und Windows befreite Zone!

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19424
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #121 am: 07 Februar 2021, 12:17:39 »
Moin,

das @ kann ein Problem sein: openvpn-server@server
Wie gesagt ich kenne das Modul nicht, ich habe noch noch nicht ganz verstanden was Du konfiguriert hast, aber es kann sein das Du das @ schützen musst: \@

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline Karflyer

  • Full Member
  • ***
  • Beiträge: 203
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #122 am: 16 Februar 2021, 11:43:08 »
Ich hatte die Frage schon einmal gestellt aber leider keine Antwort erhalten.
Ich möchte mit dem Modul den Dienst auf einem entfernten Pi steuern. Dieser PI ist aber nicht über den Standard SSH-Port (22) erreichbar, sondern über einen anderen Port. Wie kann ich das in der Definition des Devices mitgeben?

Dan, wenn das nicht vorgesehen ist, könntest du es implementieren?

Grüße
Stefan

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19424
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #123 am: 16 Februar 2021, 12:20:16 »
Hallo Stefan,

unabhängig davon ob Dan eine Idee hat, lese ich das Handbuch von ssh so:
Zitat
-p port
Port to connect to on the remote host. This can be specified on a per-host basis in the configuration file.

Wenn das in der DEF also nicht akzeptiert wird:
Zitat
-F configfile
Specifies an alternative per-user configuration file. If a configuration file is given on the command line, the system-wide configuration file (/etc/ssh/ssh_config) will be ignored. The default for the per-user configuration file is ~/.ssh/config.
Sollte es doch machbar sein? Ich habe es aber nicht probiert

Für fhem liegt liegt das unter /opt/fhem/.ssh/config

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4382
  • Wer anderen eine Bratwurst brät...
    • Buy me a coffee
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #124 am: 16 Februar 2021, 13:20:05 »
Wie Otto schon geschrieben hat, sollte das sollte mit der config Datei funktionieren.

Ich gucke mir aber gerade das Modul an und schaue ob ich es noch mit übergeben bekomme.

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 Karflyer

  • Full Member
  • ***
  • Beiträge: 203
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #125 am: 16 Februar 2021, 13:24:20 »
Zitat
Hallo Stefan,

unabhängig davon ob Dan eine Idee hat, lese ich das Handbuch von ssh so:
Zitat
-p port
Port to connect to on the remote host. This can be specified on a per-host basis in the configuration file.

Wenn das in der DEF also nicht akzeptiert wird:
Zitat
-F configfile
Specifies an alternative per-user configuration file. If a configuration file is given on the command line, the system-wide configuration file (/etc/ssh/ssh_config) will be ignored. The default for the per-user configuration file is ~/.ssh/config.
Sollte es doch machbar sein? Ich habe es aber nicht probiert

Für fhem liegt liegt das unter /opt/fhem/.ssh/config

Gruß Otto

Hallo Otto,

Ich habe im Code des Moduls nachgeschaut. In der def kann man offensichtlich den Port nicht angeben.

Dein zweiter Hinweis auf den config-file im ssh-Verzeichnis hat jedoch zum Erfolg geführt. Diese Möglichkeit kannte ich offen gestanden nicht. Vielen Dank dafür. Trotzdem käme es der Flexibilität des Moduls zugute, wenn Dan die Möglichkeit einer Portangabe vorsehen würde.

Grüße
Stefan

Offline Karflyer

  • Full Member
  • ***
  • Beiträge: 203
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #126 am: 16 Februar 2021, 13:32:04 »
Hallo Dan,
Zitat
Wie Otto schon geschrieben hat, sollte das sollte mit der config Datei funktionieren.
Ich gucke mir aber gerade das Modul an und schaue ob ich es noch mit übergeben bekomme.
Gruß
Dan

Beim überfliegen deines Codes habe ich 'quick and dirty' bei der Definition der Variable $login den Port übergeben. Ich habe den Port hierbei über ein Attribut  vorgegeben:
  my $sshPort = AttrVal($name,"serviceSSH-Port","");
  my $login = "-p ".$sshPort." ".AttrVal($name,"serviceLogin","");

Wäre vielleicht eine Möglichkeit, wenn du die def nicht anfassen möchtest.

Grüße
Stefan


Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4382
  • Wer anderen eine Bratwurst brät...
    • Buy me a coffee
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #127 am: 16 Februar 2021, 13:36:39 »
In der angehängten Version kann nun beim define nach IP/DNS die Erweiterung " -p <port>" angehängt werden, oder nachträglich im Attribut serviceLogin hinterlegt werden.
Das dürfte die config Datei hierfür überflüssig machen.
Bitte gerne testen und Feedback geben.

Gruß
Dan
« Letzte Änderung: 16 Februar 2021, 16:55:08 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 Karflyer

  • Full Member
  • ***
  • Beiträge: 203
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #128 am: 16 Februar 2021, 14:39:55 »
Zitat
In der angehängten Version kann nun beim define nach IP/DNS die Erweiterung " -p <port>" angehängt werden, oder nachträglich im Attribut serviceLogin hinterlegt werden.
Das dürfte die config Datei hierfür überflüssig machen.
Bitte gerne testen und Feedback geben.

Die def sieht bei mir jetzt so aus:
define <name> serviced <Dienst Name> <user@ip-adresse> <-p Portnummer>
Das Modul akzeptiert die Definition stellt aber keine Verbindung her. Beim ssh-Aufruf wird nach wie vor der Standardport (22) genutzt:
ssh: connect to host 192.168.2.8 port 22: Connection refused
Ursache ist, das dass Attribut 'serviceLogin' den Port aus der def nicht bekommt. Erst nach Änderung dieses Attributs mit Angabe des Ports funktioniert es jetzt.

Grüße
Stefan
« Letzte Änderung: 16 Februar 2021, 15:58:16 von Karflyer »

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4382
  • Wer anderen eine Bratwurst brät...
    • Buy me a coffee
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #129 am: 16 Februar 2021, 15:59:25 »
Hab eine neue Version gebaut.
servicePort ist nun als Attribut verfügbar.
Übergeben kann man den Port beim Definieren nun ohne das "-p" dazwischen (das war irgendwie verwirrend), also:
define <name> serviced <service name> [user@ip-address] [port]
Gruß
Dan
« Letzte Änderung: 16 Februar 2021, 17:48:23 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 Karflyer

  • Full Member
  • ***
  • Beiträge: 203
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #130 am: 16 Februar 2021, 19:46:03 »
Zitat
Hab eine neue Version gebaut.
servicePort ist nun als Attribut verfügbar.
Übergeben kann man den Port beim Definieren nun ohne das "-p" dazwischen (das war irgendwie verwirrend), also:
Code: [Auswählen]
define <name> serviced <service name> [user@ip-address] [port]

Gruß
Dan

Funktioniert jetzt einwandfrei. Vielen Dank Dan für die rasche Umsetzung.

Grüße
Stefan

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4382
  • Wer anderen eine Bratwurst brät...
    • Buy me a coffee
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #131 am: 16 Februar 2021, 20:33:02 »
Das freut mich.
Habe dabei sogar noch einen "Käfer festgesetzt" (bug fixed).
Ich checke die Version dann nachher noch ein damit sie ab morgen früh mit im Update ist.

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 dennisk

  • New Member
  • *
  • Beiträge: 31
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #132 am: 21 Februar 2021, 15:04:35 »
Hallo DeeSPe,

mir ist gerade beim Update aufgefallen, dass nach Deinen Änderungen serviceSudo beim Start von fhem als 1 gesetzt wird, obwohl bei mir das Attribut mit 0 eingetragen ist. Ich bin leider in Perl nicht so tief drin und konnte bisher noch nicht nachvollziehen, warum das auf Grund Deiner letzten Änderungen so ist. Könntest Du Dir das einmal anschauen? Wenn Du noch weitere Angaben brauchst, melde Dich.
Danke schon mal!

Offline DeeSPe

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4382
  • Wer anderen eine Bratwurst brät...
    • Buy me a coffee
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #133 am: 21 Februar 2021, 19:05:24 »
Hallo DeeSPe,

mir ist gerade beim Update aufgefallen, dass nach Deinen Änderungen serviceSudo beim Start von fhem als 1 gesetzt wird, obwohl bei mir das Attribut mit 0 eingetragen ist. Ich bin leider in Perl nicht so tief drin und konnte bisher noch nicht nachvollziehen, warum das auf Grund Deiner letzten Änderungen so ist. Könntest Du Dir das einmal anschauen? Wenn Du noch weitere Angaben brauchst, melde Dich.
Danke schon mal!

Hallo dennisk,

ich habe in den letzten Tagen öfter neu gestartet und konnte/kann das Verhalten nicht nachvollziehen. An dem "sudo" war ich auch gar nicht dran.
Hast Du ein paar mehr Informationen für mich? Was ist das für ein Dienst? Remote oder lokal? Zeig mal die Raw-Def.

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 dennisk

  • New Member
  • *
  • Beiträge: 31
Antw:Neues Modul: 98_serviced.pm - systemd und initd Dienste steuern
« Antwort #134 am: 22 Februar 2021, 10:24:00 »
Hier mal die RAW Def:
defmod sd serviced fhem
attr sd serviceSudo 0

setstate sd running
setstate sd 2021-02-21 18:02:47 error none
setstate sd 2021-02-21 18:02:47 state running
setstate sd 2021-02-21 18:02:47 status Active: active (running) since Sun 2021-02-21 18:01:56 CET;; 50s ago

An der Definition von Serviced habe ich seit Monaten nichts geändert. Das Ganze tritt bei mir reproduzierbar nur mit Deinen letzten beiden Commits auf, also bis 1.2.6 ist alles gut.
Ich hab inzwischen rausgefunden, dass mit Deinen letzten Änderungen die Variable $sudo auch dann den String 'sudo' enthält, obwohl serviceSudo auf 0 gesetzt ist. Im zweiten Teil wird ja noch der Inhalt von $login geprüft, und in Bezug auf diese Variable hast Du ja Änderungen vorgenommen (die mittlere Zeile ist neu):

my $login = AttrVal($name,"serviceLogin","");
$login .= $login ? " -p ".AttrNum($name,"servicePort",22) : "";
my $sudo = AttrNum($name,"serviceSudo",1) && $login !~ /^root@/ ? "sudo " : "";

Hilft Dir das schon weiter? Wenn Du noch mehr Infos brauchst, sag Bescheid.

Vielen Dank!