NEWS
Einen PI3 durch ioBroker herunterfahren?
-
-
@Kusi plex.sh ist ein Shell-Script - das kannst Du Dir auf Deinem NAS mit
cat /share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh
anschauen und da siehst Du dann was gestartet wird. Ggf. kannst das auch hier posten - aber wie gesagt ich bin auch kein JAVA/Linux oder Shell-Script Guru, um das zu verstehen.
-
@mickym Bin auch mit den Foren-Funktionen noch nicht so vertraut, aber mit dem Spoiler habe ich wohl die richtige Funktion angewählt...
Folgendes wird mir auf cat share/CACHEDEV1_DATA/.qpkg/PlexMediaServer/plex.sh angezeigt:
-
gelöscht
-
@Kusi said in Einen PI3 durch ioBroker herunterfahren?:
ProcessCount=$(ps -ef | grep plex | wc -l)
Aufgrund dieser Zeile würde ich mal meinen, dass Dein Prozess / Dienst so heißt.
Gib halt mal:
systemctl status plex
ein und schau ob das was mit Active: active (running) enthalten ist
-
@mickym sagte in Einen PI3 durch ioBroker herunterfahren?:
@Kusi said in Einen PI3 durch ioBroker herunterfahren?:
ProcessCount=$(ps -ef | grep plex | wc -l)
Aufgrund dieser Zeile würde ich mal meinen, dass Dein Prozess / Dienst so heißt.
Gib halt mal:
systemctl status plex
Resultat ist immer
-sh: systemctl: command not found
-
@Kusi said in Einen PI3 durch ioBroker herunterfahren?:
@mickym sagte in Einen PI3 durch ioBroker herunterfahren?:
@Kusi said in Einen PI3 durch ioBroker herunterfahren?:
ProcessCount=$(ps -ef | grep plex | wc -l)
Aufgrund dieser Zeile würde ich mal meinen, dass Dein Prozess / Dienst so heißt.
Gib halt mal:
systemctl status plex
Resultat ist immer
-sh: systemctl: command not found
Probier mal
service plex status
Glaub dieser init.d war der Vorgänger
-
@mickym sagte in Einen PI3 durch ioBroker herunterfahren?:
service plex status
Glaub dieser init.d war der Vorgänger
Dasselbe Resultat.
-
@Kusi Dann muss man es wohl so machen wie in dem Script.
Gib mal
ps -ef | grep plex | wc -l
ein. Da sollte dann bei laufendem System eine Zahl > 1 rauskommen.
-
@mickym Wenn Plex läuft, dann kommt eine 2, ansonsten eine 1.
-
@Kusi Genau . so überprüft dass das Script auch.
so nun brauchen wir wahrscheinlich Hilfe - aber im Grunde sieht es nun so aus.
Du führst vom iobroker aus:
exec(ssh admin@192.168.1.10 ps -ef | grep plex | wc -l, function (error, stdout, stderr) { setState('Datenpunkte.0.Dienststatus',stdout); });
Statt 'Datenpunkte.0.Dienststatus' gibst halt einen Datenpunkt ein, den Du unter 0_userdata.0 selbst angelegt hast.
Dann sollte im iobroker nach ausführen in dem Datenpunkt 1 oder 2 stehen.
-
Statt in einen Datenpunkt was zu schreiben - kannst stdout natürlich auch direkt auf 1 oder 2 überprüfen und irgendwas programmieren. - zum Beispiel einen Eintrag in das iobroker-Log schreiben oder was Du willst.
-
@mickym sagte in Einen PI3 durch ioBroker herunterfahren?:
exec(ssh admin@192.168.1.10 ps -ef | grep plex | wc -l, function (error, stdout, stderr) { setState('Datenpunkte.0.Dienststatus',stdout); });
Hier fehlen doch noch ein paar Gänsefüsschen?
Ich habe diese eingefügt, ein Fehler wird nicht angezeigt, aber der Datenpunkt wird nicht gefüllt.exec ("ssh admin@192.168.1.10 'ps -ef | grep plex | wc -l', function (error, stdout, stderr) { setState(javascript.0.Eigene_Datenpunkte.Plex_Dienst,stdout); }");
Wozu ist denn die function mit error, stdout und stderr?
-
exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { setState(javascript.0.Eigene_Datenpunkte.Plex_Dienst,stdout); });
Probiere es mal so - unter javascript soll man glaub keine Datenpunkte anlegen - aber egal - geht schon.
Ich hab die Gänsefüsschen mal korrigiert.
ggf. auch noch so, wenn das oben nicht funktioniert.
exec ("ssh admin@192.168.1.10 'ps -ef | grep plex | wc -l'", function (error, stdout, stderr) { setState(javascript.0.Eigene_Datenpunkte.Plex_Dienst,stdout); });
Diese Funktion ist eine sogenannte Callback Funktion, die aufgerufen wird, nachdem der Befehl auf dem Zielsystem ausgeführt wurde. Das Linuxsystem kennt grundsätzlich in jeder Shell 3 Ausgabekanäle.
error = meist nur eine Fehlernr. oder 0 wenn alles OK
stdout = die Standardausgabe, die Du sonst auf dem Bildschirm siehst - also 1 oder 2 in Deinem Fall
stderr = Fehlerkanal mit Fehler in TextformAlso liefert unser Befehl, den Du auf der Kommandozeile ausgeführt hast 1 oder 2 und füllt die Variable stdout. Diese wird mit setState dann geschrieben.
-
@mickym Bei beiden Codes erscheint "compile failed".
-
exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',stdout); });
oder so
exec ("ssh admin@192.168.1.10 'ps -ef | grep plex | wc -l'", function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',stdout); });
-
@mickym sagte in Einen PI3 durch ioBroker herunterfahren?:
exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',stdout); });
Damit funktioniert es einwandfrei.
0 = Dienst gestoppt
1 = Dienst wird gestartet
2 = Dienst läuft -
@Kusi Na Glückwunsch - dann habe ich ja meine Schuldigkeit getan.
und sorry - wie gesagt ich bin da auch unsicher und taste mich halt heran.
-
@mickym Auf diese Art und Weise kann also von anderen Gerät im Netzwerk dessen Status usw. abgefragt werden? Zum Beispiel freie Speichergrösse von Festplatten, usw.?
Sehr spannend diese Sache, jetzt müsste man nur noch alle Einzelheiten verstehen.
Danke dir vielmals für deine Hilfe!!! Dürfte ich dich wieder mal anschreiben per PN wenn ich eine Frage habe?Du hast mir super geholfen, danke vielmals!
Ich würde mich auch daran tasten, wenn ich alles verstehen würde...Im Log erscheinen jetzt haufenweise Warnmeldungen...
-
@Kusi Klar gerne - Du kannst zwar auch mit PN schreiben - aber ein eigener Thread ist besser - da man im PN System Code - Screenshots etc. nicht so richtig posten kann. Und auch wenn ich mich hier vielleicht dumm anstelle und mich wie gesagt herantaste, da ich kein JAVA Mensch bin sondern meine Logik mit Node-RED mache.
Du kannst ja die Warnmeldungen posten - aber da werde ich wahrscheinlich nicht helfen können.
Na den letzten schon:
javascript.0 2020-09-07 23:40:00.272 warn (6635) You are assigning a string to the state "javascript.0.Eigene_Datenpunkte.Plex_Dienst" which expects a number. Please fix your code to use a number or change the state type to string. This warn
Mach mal den von Dir erstellten Datenpunkt zum Typ Zeichenkette anstelle von Zahl.
Bei den anderen Warnungen - wie gesagt müssen hier die Java-Gurus ran. Vielleicht kann @paul53 helfen - der ist hier glaub ich bei Javascript Fragen der Guru.
Vielleicht darf man keine Pipes | nutzen - dann kann man den Befehl ggf. in eine sh- Datei stecken, aber wie gesagt ich kenne mich mit den Warnungen bei javascript nicht aus. Ansonsten nutze auch NodeRED - da ist das einfacher.