python - 使用python的看门狗从linux监控afp共享文件夹

标签 python linux raspberry-pi watchdog afp

我希望 linux 机器(Raspberry pi)通过 AFP(Apple 文件协议(protocol),macbook 是主机)监控共享文件夹。

我可以通过 mount_afp 挂载共享文件夹,并安装 watchdog python 库来监控共享文件夹。问题是 watchdog 只能监视来自 linux 机器本身的修改。

如果监控文件夹被宿主机(Apple macbook)或其他pc修改,linux机器无法发现变化。没有日志出来。

在主机(Apple macbook)上测试同一个 watchdog python 文件后,我可以得到其他机器的所有修改日志。

主机可以获取文件或文件夹的所有修改。但是其他机器( guest 机器)无法监视主机或其他人对文件的修改。

看门狗是正常状态吗?还是账号和权限有问题?

这里是看门狗示例。

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

最佳答案

对于网络挂载,通常的文件系统事件并不总是被发出。在这种情况下,不要使用 Observer,而是尝试使用 PollingObserver —— 即,从以下位置更改:

   self.observer = Observer()

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

还有一个 PollingObserverVFS 类可供您试验。

文档:https://pythonhosted.org/watchdog/api.html#module-watchdog.observers.polling

关于python - 使用python的看门狗从linux监控afp共享文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45441623/

相关文章:

python - 惯用方式管理Docker中的持久数据存储

python - 图像卷积函数的矢量化实现

python - 使用 networkX 查找节点前辈的最优雅方式

linux - CDROM函数——函数指针到哪里去了?

python - 使用 Python 对 jpeg 图像进行排序和合并?

linux - 如何在linux中使用我自己的动态库(Makefile)

linux - Sublime Text ubuntu 安装

raspberry-pi - 如何在模拟器上运行 raspbian jessie?

java - Raspberry Pi MAX31865 Python 到 Java 的转换

linux - 使用 STLINK 和 Linux 刷新 ST 板