2017-08-01 21 views
1

linuxマシン(Raspberry pi)がAFP(Appleファイルプロトコル、MacBookはホスト)によって共有フォルダを監視します。Pythonのウォッチドッグを使用してLinuxからafp共有フォルダを監視する

mount_afpで共有フォルダをマウントし、共有フォルダを監視するためのウォッチドッグPythonライブラリをインストールできます。問題は、ウォッチドッグがLinuxマシン自体からの変更だけを監視できることです。

ホストマシン(Apple macbook)や他のPCによって監視フォルダが変更された場合、Linuxマシンは変更を検出できませんでした。ログは出力されませんでした。

私はホストマシン(Apple macbook)で同じウォッチドッグのpythonファイルをテストした後、私は他のマシンですべての変更のログを取得できます。

ホストマシンは、ファイルまたはフォルダのすべての変更を取得できます。しかし、他のマシン(ゲストマシン)は、ホストなどからのファイルの変更を監視することはできません。

ウォッチドッグの正常な状態ですか?またはアカウントと許可に問題がありますか?

ここにウォッチドッグのサンプルがあります。ネットワークマウント用

import time 
from watchdog.observers import Observer 
from watchdog.events import FileSystemEventHandler 


class Watcher: 
    DIRECTORY_TO_WATCH = "/path/to/my/directory" 

    def __init__(self): 
     self.observer = Observer() 

    def run(self): 
     event_handler = Handler() 
     self.observer.schedule(event_handler, self.DIRECTORY_TO_WATCH, recursive=True) 
     self.observer.start() 
     try: 
      while True: 
       time.sleep(5) 
     except: 
      self.observer.stop() 
      print "Error" 

     self.observer.join() 


class Handler(FileSystemEventHandler): 

    @staticmethod 
    def on_any_event(event): 
     if event.is_directory: 
      return None 

     elif event.event_type == 'created': 
      # Take any action here when a file is first created. 
      print "Received created event - %s." % event.src_path 

     elif event.event_type == 'modified': 
      # Taken any action here when a file is modified. 
      print "Received modified event - %s." % event.src_path 


if __name__ == '__main__': 
    w = Watcher() 
    w.run() 
+0

ウォッチドッグでは、ローカルファイルシステムの変更のみを監視できます。変更については、OSおよびリモートファイルシステムから通知されません。 –

+0

@Klaus Dこんにちは、AFPの共有フォルダを監視するPythonライブラリはありますか? –

+0

最初の質問は、クライアントがホストによって通知された場合です。そうでなければ、ライブラリはありません。 –

答えて

0

、通常のファイルシステムのイベントは、常に放出されません。あなたが使って実験ができPollingObserverVFSクラスもあり

self.observer = Observer() 

from watchdog.observers import PollingObserver 
    ... 
    self.observer = PollingObserver() 

へ:からの変化、すなわち - このような場合には、代わりにObserverを使用しての、PollingObserver使用してみてください。

ドキュメント:https://pythonhosted.org/watchdog/api.html#module-watchdog.observers.polling

関連する問題