Hauptmenü

Script bei Start starten

Begonnen von choetzu, 26 Dezember 2018, 12:04:56

Vorheriges Thema - Nächstes Thema

choetzu

Guten Mittag

Bei mir läuft ein Script aus https://forum.fhem.de/index.php/topic,45783.msg385316.html#msg385316. Wenn ich heute FHEM neu starte, dann muss ich immer im Teminal mit /opt/fhem/owl2fhem das Skript starten und den Terminal offen lassen.

Gibt es eine saubere und v.a. einfache Möglichkeit bei Fhem Neustart das Script auszuführen und auf Wunsch auch wiederr zu beenden?

Die Dokumentationen im Internet sind für mich etwas zu hohe Schule und ich möchte auch nicht, dass ich durch eine Fehlmanipulation Fhem zum abstürzen bringe.

Danke für die Hilfe.

Lg c
Raspi3, EnOcean, Zwave, Homematic

Otto123

Hi,

die erste Quick&Dirty Lösung wäre, dass Programm einfach mittels "/opt/fhem/owl2fhem "auf der FHEM Kommandozeile zu starten.
Funktioniert das? Ich habe nämlich nicht gesehen, ob das Programm spezielle Rechte braucht. Unter welchem User startest Du es im Terminal?

Allerdings kenne ich das Programm nicht - vielleicht hat auch einer schon eine fertige Lösung. Dienst wäre sicher am elegantesten...

Gruß  Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

Wenn das dann geht und das Script tut was du willst, dann:

define nAutoScriptStart notify global:INITIALIZED "/opt/fhem/owl2fhem "

Bzw. halt das Kommando dann so anpassen wie es tut/notwendig ist...

Damit wird es ausgeführt, wenn fhem startet...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

@Joachim: Wir zwei wieder  ;D  ;D ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

choetzu

Hallo Joachim und Otto,

danke, das klappt. Und so einfach ;) Es funktioniert. Die Readings werden fleissig gefüllt, auch wenn nix geloggt wird.

Und wie kann ich das Script wieder stoppen ? ;) Geht das auch so einfach?

Lg c
Raspi3, EnOcean, Zwave, Homematic

MadMax-FHEM

@Otto: jep! ;)

Hmmm vielleicht nicht ganz so einfach...
...also außer du hast etwas im Skript vorgesehen es "sauber" und "einfach" zu beenden...

Ansonsten (harter Weg):

"sudo killall owl2fhem"

Wobei dazu halt der User fhem einen Eintrag in der sudoers benötigt, dass er eben das Kommando als "root" ausführen darf...
...oder (neuerdings) eben eine "eigene Datei" unter: /etc/sudoers.d/

Dort sollte (bei einem PI mit Raspbian) bereits eine für den User 'pi' liegen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

#6
Nicht ganz, die Prozesse die fhem gestartet hat, kann fhem doch auch beenden!?

Es wird nix geloggt? Loggt das Programm denn? Dann sollte das im FHEM Logfile stehen - nicht so schön ...

Edit: So eventuell?
"pkill -9 -f owl2fhem"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

MadMax-FHEM

Hmmm hab ich noch nie probiert, ob der User der startet auch "killen" darf ;)

Wieder was gelernt...

EDIT: wobei die Option -f (laut man pkill) aber den gesamten Pfad will/fordert:

Zitat
-f, --full
              The pattern is normally only matched against the process name.  When -f is set, the full command line is used.

Oder verstehe ich da was falsch!?

Danke, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Otto123

#8
Ich: Copy und paste ohne Kopf  ::) -> Ich habe den Befehl einfach probiert und er ging.

Dann habe ich jetzt mal folgendes probiert.
Erst starte ich in einem zweiten Fenster ein "python ring.py" und dann:
pi@raspib:~ $ ps -ax |grep ring
1793 pts/0    R+     0:06 python ring.py
1798 pts/1    S+     0:00 grep --color=auto ring
2490 ?        S    270:10 python ring1.py
pi@raspib:~ $ pkill -9 ring
pi@raspib:~ $ ps -ax |grep ring
1793 pts/0    R+     0:12 python ring.py
1801 pts/1    S+     0:00 grep --color=auto ring
2490 ?        S    270:10 python ring1.py
pi@raspib:~ $ pkill -9 -f ring
pkill: killing pid 2490 failed: Die Operation ist nicht erlaubt
pi@raspib:~ $ ps -ax |grep ring
1804 pts/1    S+     0:00 grep --color=auto ring
2490 ?        S    270:10 python ring1.py
pi@raspib:~ $

Wie man sieht: ohne -f passiert nichts, mit -f versucht er alle ring zu killen und darf nur einen.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Otto123

Im Wiki Ubuntu steht dann dies:
Zitat-f   Normalerweise wird nur der Prozessname nach Suchbegriff durchsucht. Durch die Angabe von -f wird die gesamte Kommandozeile durchsucht, also auch die übergebenen Parameter.
;D

Das erklärt es dann wieder :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

choetzu

Hallo und guten Abend, das funktioniert beides bestens. Ganz herzlichen Dank.

Habs probiert es muss jedoch jeweils wie folgt gemacht werden (in der Kommandozeile)

{system("pkill -9 -f owl2fhem &")}
resp.
{system("sudo killall owl2fhem &")}


nochmals danke.. Das ging relativ schlank und einfach... Das notify ist auch installiert..
Raspi3, EnOcean, Zwave, Homematic

Otto123

pkill funktioniert bei mir auch so - ohne system
"pkill -9 -f ring"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

choetzu

Zitat von: MadMax-FHEM am 26 Dezember 2018, 12:43:33
Wenn das dann geht und das Script tut was du willst, dann:

define nAutoScriptStart notify global:INITIALIZED "/opt/fhem/owl2fhem "

Bzw. halt das Kommando dann so anpassen wie es tut/notwendig ist...

Damit wird es ausgeführt, wenn fhem startet...

Gruß, Joachim

Hmm, das klappt bei mir nicht. Ich habe folgendes gemacht

define AutoScriptStart_notify notify global:INITIALIZED "/opt/fhem/owl2fhem";;set Arlo_Restart_Dummy push

Nach einem Neustart passiert nix. Auch der zweite Befehl geht nicht... Im Logfile kommt nix. Und beim Event-Monitor auch nicht. Ich sehe nirgends ein gobal:INITIALIZED... mein global hat "no definition".. Liegt es evtl. daran?
Raspi3, EnOcean, Zwave, Homematic

Otto123

Hi,

die no definition steht bei mir auch :)

Aber wo wir wieder beim Thema sind (Mein notify geht nicht) :D https://wiki.fhem.de/wiki/Notify#Anweisung
Wenn Du deine Anweisung mal  komplett durch so einen {Log ...} Eintrag ersetzt? Wird der Event getriggert?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

choetzu

danke, somit konnte ich den Uebeltäter überstellen. Offensichtlich lag es an den doppelten ";;".. Jetzt hats geklappt.

Was anderes: Wie kann ich folgenden Ablauf am besten darstellen?

global:INITIALIZED "sudo ip link set can0 type can bitrate 20000";sleep 5;"sudo ifconfig can0 up"

Das scheint nicht zu gehen, obschon das notify ausgelöst wird. Muss man das besser in ein file.sh machen und so auslösen? Hmm, da käme ich schon an meine Grenzen.

lg c
Raspi3, EnOcean, Zwave, Homematic