FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: ingo46 am 11 Januar 2023, 12:00:20

Titel: Notify wenn eine Datei sich ändert
Beitrag von: ingo46 am 11 Januar 2023, 12:00:20
Hallo,

ich habe eine Logdatei, die sich sehr selten ändert. Ist es möglich über ein "Notify" sich anzeigen zu lassen, dass sich die Datei geändert hat?

Ingo

Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: Sailor am 11 Januar 2023, 12:08:48
Hallo Ingo

Zitat von: ingo46 am 11 Januar 2023, 12:00:20
ich habe eine Logdatei, die sich sehr selten ändert. Ist es möglich über ein "Notify" sich anzeigen zu lassen, dass sich die Datei geändert hat?

Zunaechst: Was bedeutet für dich "geändert hat"?

Der/Die
a) Dateiinhalt 
b) Dateigröße
c) Linux Zeitstempel der Datei

ist zum Zeitpunkt tn nicht identisch wie zum Zeitpunkt tn-1?

Ich würde da einen "dummy" mit einem "at" verwenden, welcher den Code enthält die o.g. Parameter abzuchecken.
Bei b) und c) brauchst du nur den augenblicklichen Wert mit dem bereits im dummy abgelegten Wert vergleichen.
Bei a) würde ich eine MD5-Checksumme generieren und im dummy ablegen und wie bei b) und c) vergleichen.

Gruß
    Sailor
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: Beta-User am 11 Januar 2023, 12:15:18
inotify? https://fhem.de/commandref_modular.html#inotify
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: ingo46 am 11 Januar 2023, 14:10:16
Zitat von: Sailor am 11 Januar 2023, 12:08:48
Zunaechst: Was bedeutet für dich "geändert hat"?

Der/Die
a) Dateiinhalt 
b) Dateigröße
c) Linux Zeitstempel der Datei

ist zum Zeitpunkt tn nicht identisch wie zum Zeitpunkt tn-1?


Es ändert sich fast immer nur der Zeitstempel.
Wie komme ich nun an den Zeitstempel?

An Beta-User
...da ich auch inotify testen möchte:
installiere ich die Module über cpan oder gibt oder gibt es auch die Möglichkeit über apt install ...?

Ingo
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: Otto123 am 11 Januar 2023, 15:16:46
Hallo ingo,
Zitat von: ingo46 am 11 Januar 2023, 14:10:16
installiere ich die Module über cpan oder gibt oder gibt es auch die Möglichkeit über apt install ...?
liblinux-inotify2-perl
und ich denke eines von diesen:
libdata-dumper-concise-perl
libdata-dumper-simple-perl
libdata-serializer-perl
perl-doc

Tipp: sowas findet man mit apt-file search
apt-get install apt-file
apt-file update

Dann z.B. so mehrere Pakete suchen
cat <<EOF |apt-file search -l -f -
Data::Dumper
Linux::Inotify2
EOF


Gruß Otto
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: OdfFhem am 11 Januar 2023, 18:22:35
Unter Umständen hilft: https://forum.fhem.de/index.php/topic,83538.msg757621.html#msg757621 (https://forum.fhem.de/index.php/topic,83538.msg757621.html#msg757621)

Dort geht es um ein FHEM-Modul für die inotify-Nutzung ...
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: ingo46 am 12 Januar 2023, 12:41:01
Hallo Otto,

dein Tipp ist sehr hilfreich - aber nur zum Verständnis:

ich habe mit 'sudo cepan Data::Dumper'

das Modul installiert - das Gleiche hätte ich erreicht mit:

sudo apt install libdata-dumper-concise-perl libdata-dumper-simple-perl libdata-serializer-perl perl-doc

Gibt es einen Unterrschied?

Ingo

 
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: ingo46 am 12 Januar 2023, 12:43:17
Hallo OldfFhem,
Zitat von: OdfFhem am 11 Januar 2023, 18:22:35
Unter Umständen hilft: https://forum.fhem.de/index.php/topic,83538.msg757621.html#msg757621 (https://forum.fhem.de/index.php/topic,83538.msg757621.html#msg757621)

Danke - kann mein Problem nun lösen.

Ingo

Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: Otto123 am 12 Januar 2023, 13:58:24
Zitat von: ingo46 am 12 Januar 2023, 12:41:01
Gibt es einen Unterrschied?
Ja. Bei apt upgrade werden die Pakete aktualisiert die mit apt installiert wurden. Dein Paket musst Du mit cpan aktualisieren. Ich finde das Setup und die Wartung mit cpan extrem umständlich, aber das ist sicher eine persönliche Sicht.

Ich habe die Ausgabe von apt-file so verstanden: die vier Pakete enthalten alle jeweils Data::Dumper, es wird reichen eines von den vieren zu installieren.
Das ist halt auch ein Unterschied: mit cpan installiert man ein Perl Modul. Mit apt installiert man ein Softwarepaket, dies enthält Module/Software x y z ...
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: betateilchen am 12 Januar 2023, 15:14:07
Zitat von: ingo46 am 11 Januar 2023, 14:10:16
Es ändert sich fast immer nur der Zeitstempel.
Wie komme ich nun an den Zeitstempel?

my $timeStamp = (stat($fileName))[9];
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: ingo46 am 12 Januar 2023, 22:47:54
Ich möchte noch einmal mein Vorhaben genauer darstellen:

Ich habe eine Textdatei (einzeiliger Text) '/home/pi/INFO und in FHEM ein 'define textfile dummy'. Wenn 'INFO' sich ändert, wird {TEXT()} aufgerufen mit

sub TEXT()
{
   { my ($error, @content) = FileRead({FileName =>"/home/pi/INFO", ForceType => "file"});
   fhem("set textfile @content");
   }
   return;
}


Ich habe die Module für inotify installiert und es funktioniert - man kann INFO lesen -  nur geht es auch weniger umständlich?

Ingo
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: ingo46 am 12 Januar 2023, 23:00:37
Hallo Otto,

Zitat von: Otto123 am 12 Januar 2023, 13:58:24
Ich finde das Setup und die Wartung mit cpan extrem umständlich, aber das ist sicher eine persönliche Sicht.
Aus diesem Grund bin ich auch kein Freund von CPAN.

Bisher habe ich 4 Module unter CPAN installiert, alles andere über apt. Wenn ich jetzt auch die entsprechenden Softwarepakete installiere, kann ich mir das Update über CPAN dann sparen, oder muss ich vorher die Module erst deinstallieren?

Ingo

Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: Wernieman am 12 Januar 2023, 23:17:53
CPAN hat den Nachteil, das ein Update von perl (mit apt) eben nicht die CPAN-Module updaten. Da die CPAN-Module zur Version von perl passen müssen, mußt Du dann manuell nachziehen. Funzt, wird aber meistens vergessen (auch von mir) ......wobei ich auch jetzt suchen müsste, wie man CPAN Module aktuallisiert ...

Natürlich bereitet dieses gerade Anfängern riesige Probleme, die lesen aber immer in den Modul-Doku-Seiten die CPAN-Anleitungen und machen copy&paste. Nur .. dagegen anzukämpfen ist wie der Kampf "Don Gigote gegen die Windmühlen"
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: ingo46 am 13 Januar 2023, 13:55:42
Ich mein Problem wie folgt gelöst:

in myUtils

sub TEXT()
{
   { my ($error, @content) = FileRead({FileName =>"/home/pi/INFO", ForceType => "file"});
   return $content[0]);
   }
}


und
define rg_Text readingsGroup <{TEXT()}>


Ingo

Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: Otto123 am 14 Januar 2023, 15:38:20
Zitat von: ingo46 am 12 Januar 2023, 23:00:37
Hallo Otto,
Aus diesem Grund bin ich auch kein Freund von CPAN.

Bisher habe ich 4 Module unter CPAN installiert, alles andere über apt. Wenn ich jetzt auch die entsprechenden Softwarepakete installiere, kann ich mir das Update über CPAN dann sparen, oder muss ich vorher die Module erst deinstallieren?

Ingo
Da nochmal nachgefragt hast: hatte Werner ja eigentlich beantwortet. CPAN installierte Module werden mit CPAN aktualisiert, debian Pakete werden durch apt aktualisiert.
Was eigentlich passiert, wenn man erst mit cpan installiert und danach noch ein debian Paket installiert welches auch diese Modul beinhaltet weiß ich nicht. Ich denke aber, das cpan Modul bleibt und in der Installation des debian Paketes wird es weggelassen. Edit: die Annahme stimmt nicht.

Gruß Otto
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: betateilchen am 14 Januar 2023, 15:53:50
Zitat von: Otto123 am 14 Januar 2023, 15:38:20
Ich denke aber, das cpan Modul bleibt und in der Installation des debian Paketes wird es weggelassen.

Nein.

Das cpan Modul bleibt, das debian Paket weiß aber nichts davon, weil das cpan Modul nicht in die apt Datenbank eingetragen wird.

Also wird das debian Paket trotzdem nochmal installiert und überschreibt ggf. die Dateien des cpan Moduls - und genau das ist das Problem, nämlich immer dann, wenn es sich dabei um unterschiedliche Modulversionen handelt und dann ein Gemisch aus beiden Installationen entsteht.
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: Otto123 am 14 Januar 2023, 16:29:45
Danke für die Klärung. Was empfiehlst Du? Das cpan Modul erst sauber deinstallieren bevor man ein debian paket installiert, welches dieses Modul mit beinhaltet? 
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: betateilchen am 14 Januar 2023, 16:59:29
Ganz ehrlich?

Wenn ich in die Not komme, ein mit cpan installiertes Modul zu deinstallieren, setze ich lieber ein komplett neues Linux auf.
Das geht aus meinen schmerzlich gemachten Erfahrungen schneller und nervenschonender.

Alternativ habe ich aus cpan-Paketen auch schon .deb Pakete erstellt, um diese dann mit apt zu installieren. Dann stehen sie sauber in der apt Datenbank.
Nur die bestehenden Abhängigkeiten muss man dann manuell auflösen.

Wir sind hier im Thread aber inzwischen schon ganz weit im offtopic zum ursprünglichen Thema.
Titel: Antw:Notify wenn eine Datei sich ändert
Beitrag von: Wernieman am 14 Januar 2023, 20:56:03
Kann da Betateilchen nur Zustimmen. Habe selber mal 2 Stunden damit verbraucht, einen Server wegen CPAN aufzuräumen (Neuinstallation war wegen Downtime nicht möglich).