Notify wenn eine Datei sich ändert

Begonnen von ingo46, 11 Januar 2023, 12:00:20

Vorheriges Thema - Nächstes Thema

ingo46

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


Sailor

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
******************************
Man wird immer besser...

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

ingo46

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

Otto123

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
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

OdfFhem

Unter Umständen hilft: https://forum.fhem.de/index.php/topic,83538.msg757621.html#msg757621

Dort geht es um ein FHEM-Modul für die inotify-Nutzung ...

ingo46

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

 

ingo46


Otto123

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 ...
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

betateilchen

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];
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

ingo46

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

ingo46

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


Wernieman

#12
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"
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

ingo46

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


Otto123

#14
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
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