Modul: inotify - Überwachung von Dateiänderungen nach Pfad

Begonnen von marvin78, 29 Januar 2018, 15:24:32

Vorheriges Thema - Nächstes Thema

marvin78


Wernieman

Naja .. es gibt ein Unterschied zwischen "neu" und "geändert". Ich weiß es bei calc nicht, aber die meisten "kleinen" Editoren ändern die Datei (z.B. vi, nano etc). Ein Export in Access macht die Datei aber neu (Überschreiben im Sinne von löschen und neu anlegen). Das ist fürs Betriebsystem (Unix) ein größer Unterschied ...
- 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

marvin78

Alles in allem ist es nichts, was auf ein Problem im Modul hindeutet.

Frank_Huber

#63
Mahlzeit,

versuche einen FTP Ordner auf Änderungen zu überwachen.
Dieser ist in lokal gemountet.
Beim define von inotify schmiert FHEM mit dieser Meldung ab:

2021.03.23 16:04:47 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/98_inotify.pm line 440.
2021.03.23 16:04:47 3: inotify (FTP): startet watching /Q/ftp/files with the file pattern .*
Can't call method "cancel" on an undefined value at ./FHEM/98_inotify.pm line 367.
2021.03.23 16:05:49 1: Including fhem.cfg


define: defmod FTP inotify /Q/ftp/files .*

was mache ich falsch?

EDIT:
Layer 8 Problem. FHEM hatte keine Rechte. :-)
ist erledigt.

Frank_Huber

neues Problem:
setze ich das Attribut "subfolders" blockiert fhem. :-(

mein Ziel:
Einen FTP Ordner überwachen auf neue Dateien bzw Ordner.
Unterordner interessieren eigentlich nicht. Das Attribut wollte ich zum testen setzen.

erstellte Test-Dateien und Ordner haben allerdings nicht angeschlagen. Der Eventmonitor und das Device blieben stumm.
verbose 5 zeigt auch nichts.

mach ich wieder einen Layer-8 Fehler? aber welchen?
liegt es evtl daran dass der überwachte Ordner so ca 850 Elemente enthält?

TomLee

Weiß nicht was/ob überhaupt das Modul per default überwacht.

Hast du eine Angabe im Attribut mask gemacht ?
Zitat
mask
set your own mask for watching. Komma seperated list. See the Linux::Inotify2 Doku for possible masks.

Wenn nicht, versuchs einfach mal mit IN_ALL_EVENTS aus der Liste.

Gruß

Thomas

Frank_Huber

Ja, das wurde automatisch gesetzt.
Das in all kann ich auch mal testen. Aber erst morgen wieder.
Danke.

marvin78

#67
Bitte schauen, was inotify leisten kann. Gemountete (remote) Ordner können nicht überwacht werden.

Frank_Huber

Zitat von: marvin78 am 23 März 2021, 19:01:55
Bitte schauen, was inotify leisten kann. Gemountete (remote) Ordner können nicht überwacht werden.
Das erklärt natürlich meine Fehlversuche.

konnte diese Info aber nirgends finden. wo steht das?

marvin78

Das Modul setzt nur auf inotify auf. Es kann nur das leisten, was inotify (ein Linux Kernel Modul) bietet und das kann eben (logischerweise) nur das interene Dateisystem überwachen. Bitte die Doku zu inotify (nicht das FHEM Modul) konsultieren, wie im Eingangspost dieses Threads empfohlen.

Frank_Huber

Zitat von: marvin78 am 24 März 2021, 08:54:12
Das Modul setzt nur auf inotify auf. Es kann nur das leisten, was inotify (ein Linux Kernel Modul) bietet und das kann eben (logischerweise) nur das interene Dateisystem überwachen. Bitte die Doku zu inotify (nicht das FHEM Modul) konsultieren, wie im Eingangspost dieses Threads empfohlen.
Hi Marvin,

das soll keine Kritik an deiner Modul Doku sein. nicht dass das falsch rüber kam.
Habe auch zu inotify im Web und Wiki gelesen.
gesehen habe ich den Hinweis dass ein Kernel Modul keine Remote Ordner überwachen kann.
Für mich als Laie war damit kein lokaler mount gemeint. weil der mount ja lokal addressiert wird.

Aber ja, mittlerweile habe ich noch einige Foren Threads gelesen, mit unter Widersprüchlich bezüblich ftp ordnern, aber am Ende ists klar.
Muss mir einen anderen Lösungsweg suchen.

Danke für die Erklärung.

Stelaku

Hallo Marvin

Vielen dank für das Modul. Es funktioniert sehr gut.
Es hat für mich eine schöne und schnelle Lösung zum überwachen eines Dateipfad ermöglicht.

Nur habe ich immer nach einen neustart von Fhem eine perl Warnung im log.


2021.03.29 16:53:09 1: Including fhem.cfg
2021.03.29 16:53:11 3: WEB: port 8083 opened
2021.03.29 16:53:11 2: eventTypes: loaded 25 lines from ./log/eventTypes.txt
2021.03.29 16:53:12 3: telnetForBlockingFn_1617029592: port 43509 opened
2021.03.29 16:53:12 3: telnet: port 7072 opened
2021.03.29 16:53:12 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/98_inotify.pm line 440, <$fh> line 55.
2021.03.29 16:53:12 1: Including ./log/fhem.save
2021.03.29 16:53:12 1: Messages collected while initializing FHEM:SecurityCheck:
  WEB is not password protected
  telnet is not password protected

Protect this FHEM installation by defining an allowed device with define allowed allowed
You can disable this message with attr global motd none

2021.03.29 16:53:12 3: inotify (inotify): startet watching /home/Stephan/camera with the file pattern jpg.*
2021.03.29 16:53:12 0: Featurelevel: 6
2021.03.29 16:53:12 0: Server started with 14 defined entities (fhem.pl:23904/2021-03-07 perl:5.028001 os:linux user:fhem pid:9795)
2021.03.29 16:53:13 3: inotify (inotify): startet watching /home/Stephan/camera with the file pattern jpg.*
2021.03.29 16:53:13 3: inotify (inotify): startet watching /home/Stephan/camera with the file pattern jpg.*


Ich habe die Meldung auf mehreren Testsystemen. Die o.g. Meldung kommt aktuell von einem kpl. neu aufgesetzten und fast leeren Fhem.

anbei auch noch mal die Meldung mit gesetzten Stacktrace


2021.03.29 17:13:46 1: PERL WARNING: Use of uninitialized value in substitution (s///) at ./FHEM/98_inotify.pm line 440, <$fh> line 56.
2021.03.29 17:13:46 1: stacktrace:
2021.03.29 17:13:46 1:     main::__ANON__                      called by ./FHEM/98_inotify.pm (440)
2021.03.29 17:13:46 1:     main::inotify_setMasks              called by ./FHEM/98_inotify.pm (247)
2021.03.29 17:13:46 1:     main::inotify_Attr                  called by fhem.pl (3847)
2021.03.29 17:13:46 1:     main::CallFn                        called by fhem.pl (3078)
2021.03.29 17:13:46 1:     main::CommandAttr                   called by ./FHEM/98_inotify.pm (134)
2021.03.29 17:13:46 1:     main::inotify_Define                called by fhem.pl (3847)
2021.03.29 17:13:46 1:     main::CallFn                        called by fhem.pl (2118)
2021.03.29 17:13:46 1:     main::CommandDefine                 called by fhem.pl (1265)
2021.03.29 17:13:46 1:     main::AnalyzeCommand                called by fhem.pl (1116)
2021.03.29 17:13:46 1:     main::AnalyzeCommandChain           called by fhem.pl (1403)
2021.03.29 17:13:46 1:     main::CommandInclude                called by fhem.pl (619)


Ich habe erst gedacht es liegt vieleicht an meinem [<datei-RegEx>] aber es ist egal was ich dort reinschreibe die Meldung kommt trotzdem.

hier ein list von meinem inotify

Internals:
   DEF        /home/Stephan/camera jpg.*
   FD         4
   FILES      jpg.*
   FUUID      6061ee4d-f33f-d873-6079-493fa1bb4182a53b
   MID        inotify_homeStephancamerajpg
   NAME       inotify
   NOTIFYDEV  global
   NR         21
   NTFY_ORDER 81-inotify
   PATH       /home/Stephan/camera
   STATE      active
   TYPE       inotify
   VERSION    0.6.1
   READINGS:
     2021-03-29 17:26:20   lastEventFile   /home/Stephan/camera/09.jpg
     2021-03-29 17:26:20   lastEventMask   IN_CREATE
     2021-03-29 17:24:29   state           active
   helper:
     dirs:
       /home/Stephan/camera
     events:
       0:
         file       /home/Stephan/camera/09.jpg
         mask       IN_CREATE
         time       2021-03-29 17:26:20
       1:
         file       /home/Stephan/camera/08.jpg
         mask       IN_CREATE
         time       2021-03-29 17:26:02
       2:
       3:
       4:
       5:
       6:
       7:
       8:
     masks:
       IN_CREATE
Attributes:
   mask       IN_CREATE


Vieleicht kannst Du mir da weiterhelfen.

Viele Grüsse

Stephan





marvin78

Ich schaue mir das an. Die Funktion wird es nicht beeinträchtigen.

RomanticBoy83

Hallo marvin78
... ich habe mir für die Bewegungserkennung von Webcams via FTPUpload dein Modul herausgepickt.
Leider habe ich ein par Fehlerchen gefunden -> glücklicherweise aber auch behoben.

Kleinigkeiten:
1) eine Warnung wenn keine Datei im define angegeben wurde.
2) Die Aktualisierung läuft zum Startzeitpunkt mehrmals durch den Timer (für jedes Attribut)
3) sollte jemand mask während der Laufzeit löschen, dann geschieht Unheil
4) ungenutzer helper mit dem namen dirs
5) state steht nach define auf unbekannt

Problem
6) bei einem Fehler, zum Beispiel falsche Rechte auf einen Ordner ist der watcher "undef" und darf nicht in die Liste aufgenommen werden.

Neues Event
7) es kommt kein einzelnes Event, welches das inotify und den Dateinamen zur Verfügung stellt. Das wäre für die weitere Abarbeitung - z.B. weitere notifys - sehr Hilfreich.

All das habe ich für mich angepasst und möchte hier den Du darfst diesen Dateianhang nicht ansehen.  dafür bereitstellen. Eventuell wird es ja noch erweitert/korrigiert. Für mich wichtig wäre der Punkt6 und Punkt7.

marvin78

Ich habe den Patch leicht verändert übernommen. Bitte checken, ob es so funktioniert.