FHEM Forum

FHEM => Automatisierung => Thema gestartet von: arokh12 am 04 Januar 2016, 20:37:11

Titel: Probleme mit Perl Script
Beitrag von: arokh12 am 04 Januar 2016, 20:37:11
Hallo,

ich habe mich die letzten Tage mal mit Schreiben von Perlscripten beschäftigt. Leider habe ich im Moment das Problem, dass beim Ausführen des Scripts ohne FHEM erfolgreich durchgeführt wird. Wenn ich es mit einem FHEM Notify ausführe, dann erhalte ich folgende Fehlermeldung, obwohl das Programm erfolgreich ausgeführt wird.

Hier die Fehlermeldung:
E: Couldn't wait for subprocess - waitpid (10: Keine Kind-Prozesse)
2016.01.04 20:00:32 3: Test_On_notify return value: 1


Hier das Script:
#!/usr/bin/perl

use strict;
use warnings;
use POSIX;

my $Rueckgabe_Update = qx(sudo apt-get update);
my @Update= split("\n", $Rueckgabe_Update);

my $y = "20";
my $d = strftime "%d", localtime(time);
my $m = strftime "%m", localtime(time);
$y .= strftime "%y", localtime(time);
my $Datum = "$d.$m.$y";

open(TXT_Update, ">> /home/pi/Updates/Update/$m.$y.txt");
print TXT_Update "$Datum\n";
print TXT_Update "==========\n";

print TXT_Update "$Rueckgabe_Update\n";

print TXT_Update "\n";
print TXT_Update "\n";
close TXT_Update;


Und hier das Script im FHEM-Notify:

Test_on:on {
use strict;
use warnings;
use POSIX;

my $Rueckgabe_Update = qx(sudo apt-get update);
my @Update= split("\n", $Rueckgabe_Update);

my $y = "20";
my $d = strftime "%d", localtime(time);
my $m = strftime "%m", localtime(time);
$y .= strftime "%y", localtime(time);
my $Datum = "$d.$m.$y";

open(TXT_Update, ">> /home/pi/Updates/Update/$m.$y.txt");
print TXT_Update "$Datum\n";
print TXT_Update "==========\n";

print TXT_Update "$Rueckgabe_Update\n";

print TXT_Update "\n";
print TXT_Update "\n";
close TXT_Update;
}


Vielen Dank im voraus

arokh12
Titel: Antw:Probleme mit Perl Script
Beitrag von: CoolTux am 04 Januar 2016, 20:44:33
Informiere Dich mal über die 99myUtils und lagere Deinen Code dort in eine Sub. Danach rufst Du im notify die Sub einfach auf.


Test_on:on { subname(); }




Grüße
Titel: Antw:Probleme mit Perl Script
Beitrag von: arokh12 am 04 Januar 2016, 20:46:17
Daran habe ich auch schon gedacht. Könnt ihr mir denn sagen, woher der "Fehler" kommt. Mit dem Sub funktioniert es problemlos.

arokh12
Titel: Antw:Probleme mit Perl Script
Beitrag von: CoolTux am 04 Januar 2016, 20:52:11
Nein kann ich nicht. Eventuell einer der anderen. Aber so wie Du es geschrieben hast gehtes mit FHEM nicht.
Könnte alleine schon daran liegen


use strict;
use warnings;
use POSIX;


Hat nichts im Notify zu suchen
Titel: Antw:Probleme mit Perl Script
Beitrag von: Bennemannc am 04 Januar 2016, 20:56:04
Hallo,

Vermutung - bei den 99_xxx muss am Ende "1;" stehen. Keine Ahnung warum - aber ohne gibt's mecker. Entweder ist das als eine Art EOF Kennzeichen oder wird sonst irgendwie genutzt.
Wenn Du mit den 99_xxx Dateien rum machst, musst Du nach jeder Änderung in der Datei diese mit reload DATEINAME neu laden. Die 99er Datein werden beim Programmstart geladen und verbleiben dann im Speicher. Die anderen Module werden erst bei "Bedarf" geladen.

Gruß Christoph
Titel: Antw:Probleme mit Perl Script
Beitrag von: arokh12 am 04 Januar 2016, 21:00:55
Ok, danke, aber ich habe den Code vom notify direkt unter dem DEF Punkt in den Notify Eigenschaften kopiert.

arokh12
Titel: Antw:Probleme mit Perl Script
Beitrag von: arokh12 am 04 Januar 2016, 21:17:26
Ich weiss nicht ob das vielleicht mit dem Problem was zutun hat, aber wenn ich sudo apt-get update in sudo apt-get upgrade ändere, taucht diese Meldung nicht im Log auf.

arokh12
Titel: Antw:Probleme mit Perl Script
Beitrag von: CoolTux am 04 Januar 2016, 21:26:03
Bin verwirrt. In welche Log taucht denn die Meldung auf? Bin jetzt vom FHEM Log aus gegangen?
Titel: Antw:Probleme mit Perl Script
Beitrag von: Bennemannc am 04 Januar 2016, 21:28:50
Hallo,

das "update" und "upgrade" was unterschiedliches machen ist Dir schon klar - oder ? Update aktuallisiert die Paketdatenbank und upgrade installiert die aktuallisierten Pakete. Man kann auch beides zusammen ausführen "sudo apt-get update && upgrade" - eventuell muss da noch etwas hinter, damit die Abfrage [y/n] automatisch beantwortet wird. Bei "BEFEHL -h" kommt im allgemeinen eine kurze Hilfe. Ausführliche Hilfe gibt es bei "man BEFEHL".

Gruß Christoph
Titel: Antw:Probleme mit Perl Script
Beitrag von: arokh12 am 04 Januar 2016, 21:33:19
Zitat von: CoolTux am 04 Januar 2016, 21:26:03
Bin verwirrt. In welche Log taucht denn die Meldung auf? Bin jetzt vom FHEM Log aus gegangen?

Genau, die Meldung taucht im FHEM Log auf

arokh12
Titel: Antw:Probleme mit Perl Script
Beitrag von: CoolTux am 04 Januar 2016, 21:37:43
Leute hallo ihr verkennt das wesentliche. Wie bitte schon kann ein Linux Shell Anwendungsaufruf ein Logeintag im Logfile von FHEM verursachen. Das ist im Moment das wesentliche.
Zumindest habe ich es so verstanden. Also erstmal das Notifymg löschen und schauen ob dann immer noch beim apt-get was ins Log von FHEM geschrieben wird. Obwohl ich das ja fast nicht glauben mag das das tatsächlich so ist.