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
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 t
n nicht identisch wie zum Zeitpunkt t
n-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
inotify? https://fhem.de/commandref_modular.html#inotify
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
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
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 ...
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
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
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 ...
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];
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
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
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"
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
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
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.
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?
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.
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).