Probleme mit Perl Script

Begonnen von arokh12, 04 Januar 2016, 20:37:11

Vorheriges Thema - Nächstes Thema

arokh12

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

CoolTux

#1
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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

arokh12

Daran habe ich auch schon gedacht. Könnt ihr mir denn sagen, woher der "Fehler" kommt. Mit dem Sub funktioniert es problemlos.

arokh12

CoolTux

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
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Bennemannc

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
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

arokh12

Ok, danke, aber ich habe den Code vom notify direkt unter dem DEF Punkt in den Notify Eigenschaften kopiert.

arokh12

arokh12

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

CoolTux

Bin verwirrt. In welche Log taucht denn die Meldung auf? Bin jetzt vom FHEM Log aus gegangen?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Bennemannc

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
Cubietruck, Fhem 5.8
CC-RT-DN|LC-SW2-FM|RC-12|RC-19|LC-SW4-BA-PCB|LCp-SW1-BA-PCB|ES-PMSw1-Pl|LC-Bl1PBU-FM|PBI-4-FM|CC-VD|CC-TC|SEC-SC(2)|RC-KEY3-B|LC-Sw1PBU-FM|PB-2-FM|WDS100-C6-O|WDC7000|LC-Bl1-FM
Module: Dewpoint,FB_Callmonitor,HCS,Panstamp,at,notify,THRESHOLD,average,DOIF

arokh12

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

CoolTux

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.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net