如何监控远程目录和文件的变化?

2023-12-01

我正在尝试监视远程目录和文件。我需要存储或记录文件和目录的更改,即(访问、写入、打开和关闭事件)。

我尝试使用 pyinotify 来监视和记录这些事件。我为本地系统文件实现了它,但我的问题是如何监视远程文件和目录。

我是否能够借助 ssh 或任何其他方式来记录远程文件和目录中发生的事件来实现此目的?

我已经给出了本地系统文件监控的代码。

import pyinotify 
import asyncore 
from .models import AccessEvents 
import threading

class MyEventHandler(pyinotify.ProcessEvent):
    def process_IN_ACCESS(self, event):
        access=AccessEvents(mode_id=1,path=event.pathname)
        access.save()
    def process_IN_ATTRIB(self, event):
        attrib = AccessEvents(mode_id=2, path=event.pathname)
        attrib.save()
    def process_IN_CLOSE_NOWRITE(self, event):
        nwrite = AccessEvents(mode_id=3, path=event.pathname)
        nwrite.save()
    def process_IN_CLOSE_WRITE(self, event):
        write = AccessEvents(mode_id=4, path=event.pathname)
        write.save()
    def process_IN_CREATE(self, event):
        create = AccessEvents(mode_id=5, path=event.pathname)
        create.save()
    def process_IN_DELETE(self, event):
        delete = AccessEvents(mode_id=6, path=event.pathname)
        delete.save()
    def process_IN_MODIFY(self, event):
        modify = AccessEvents(mode_id=7, path=event.pathname)
        modify.save()
    def process_IN_OPEN(self, event):
        open = AccessEvents(mode_id=8, path=event.pathname)
        open.save()

def startmonitor(file_or_dir):
    # watch manager
    wm = pyinotify.WatchManager()
    try:
        test=wm.add_watch(file_or_dir, pyinotify.ALL_EVENTS, rec=True)
        if test[file_or_dir]==-1:
            return 'no_such_file_or_dir'
        else:
            # event handler
            eh = MyEventHandler()
            # notifier
            notifier = pyinotify.AsyncNotifier(wm, eh)
            thread = threading.Thread(target=asyncore.loop(), args=())
            thread.daemon = True  # Daemonize thread
            thread.start()  # Start the execution
            return 'file_monitoring_started'
    except Exception as e:
        print 'error',e

startmonitor('/tmp/test')

如果有人知道远程系统文件监控,请向我提供您的建议。提前致谢!!!


它可以通过简单的客户端-服务器模型(http)来完成。

第一步是您应该在要监视的远程系统上运行文件监视程序代码。以结构化格式保存更改。例如:-

class ChangeEvent:

 def __init__(self, event_name)

 def files_changed(self, list_files)

将这些 ChangeEvents 列表存储为队列(充当缓冲区)。制作一个简单的 GET API,以便客户端可以获得这些更改事件列表。从已发送的队列中删除 ChangeEvents。

现在在客户端应用程序(可能是移动设备或网络,没关系), 只需定期点击 api(您在上面所做的)即可获取更改。

您还可以将这些 ChangeEvents 以 json 或 csv 格式保存在远程服务器上,以进行持久存储。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何监控远程目录和文件的变化? 的相关文章

随机推荐

  • 如何重新启用 event.preventDefault?

    我有一个网页 已阻止所有提交按钮上的默认操作 但是我想重新启用按钮上的默认提交操作 我该如何执行此操作 我目前正在使用以下方法阻止默认操作 form bind submit function e e preventDefault 我已经使用
  • Android SwitchCompat风格

    我在我的新设备上使用 Android 5 1 1 测试了我的应用程序 在我的 SettingsActivity 中我有一个开关 我已经阅读了一些帖子并将其更改为android support v7 widget SwitchCompat但问
  • C中父进程向子进程发送信号

    我的子进程无法开始工作 我需要传递信号并执行readUsual功能 这是一小段代码 int main pid t pid2 fork if pid2 lt 0 printf Can t create child process n else
  • Julia 变量范围

    我试图在 while 循环中使用一些全局变量 m n r 但 Julia 1 0 0 告诉我这些变量未定义 该代码适用于 julia 0 7 0 但有一些警告 这是我正在使用的代码 是的 写得不好 我希望这不是问题 我删除了一个printl
  • Zend 框架和 Wordpress 集成

    这是我的问题 我有 require once application bootstrap php 在我的 zf 网站根文件夹中的 index php 中 我将 WordPress 博客放入 public html blog 中 我需要将 W
  • 在 Java Applet 中单击后 JButton“保持按下状态”

    我的 Java Applet 中有一个 JButton 按下按钮后 ActionListener 必须执行大量操作 因此 正因为如此 当用户单击按钮时 它会 保持按下 一段时间 有时甚至 5 分钟 而不是立即禁用自身 它会在这 5 分钟后自
  • 谷歌云存储访问的公共URL被拒绝

    我有这个 URL 但访问被拒绝 需要任何权限 https storage googleapis com BUCKET Artboard 4 png 出现此错误 匿名调用者没有 storage objects get 访问 Google Cl
  • 从所有子集中恢复原始数组

    给定一个数组的所有子集和 然后 您应该从提供的子集和中恢复原始数组 原始数组中的每个元素都保证为非负且小于 10 5 原始数组中的元素不超过 20 个 原数组也已排序 保证输入有效 实施例1 如果提供的子集总和是这样的 0 1 5 6 6
  • Microsoft CryptoAPI:如何将 PUBLICKEYBLOB 转换为 DER/PEM?

    我有一个生成的 RSA 密钥对 存储为 PRIVATEKEYBLOB 和 PUBLICKEYBLOB 并且我需要能够将这些密钥转换为 DER 或 PEM 格式 以便我可以在 PHP 或 Python 中使用它 我发现我可以使用 CryptE
  • Pymongo forEach 格式化

    如何格式化 forEach 函数 使其可以驻留在多行上而不会导致语法错误 就像是 self request db myCollection find forEach function u u forSong self request db
  • 带 + 和 - 的 WPF 扩展器按钮样式

    样式专家 我需要帮助设计一种类似于 Visual Studio 代码编辑器中的 Expander 样式 到目前为止 我已经想出了这个
  • 我的 Visual Studio 2012 中的行号旁边出现了彩色条

    今天 当我在工作中启动 Visual Studio 2012 时 我发现了一些新的彩色条 我们通过 RDP 在共享远程服务器上工作 所以我四处询问是否有人安装或更新了任何东西 似乎没有人做过 任何事 我看到的酒吧有 我知道最左边的条 绿色和
  • 将 python 中的单个有序列表转换为字典

    我似乎无法找到一种优雅的方式来开始t并导致s gt gt gt t a 2 b 3 c 4 magic gt gt gt print s a 2 c 4 b 3 我想出的解决方案似乎不太优雅 s dict for i in xrange 0
  • 无法从前端解析 docker compose 服务名称

    您好 我是使用 docker 进行开发的新手 我试图在这里从前端 react 到后端 express js 进行通信 我也启用了 cors 但收到错误消息net ERR NAME NOT RESOLVED当尝试使用 url 从后端获取时ht
  • java.net.BindException:无法分配请求的地址

    我想在我的应用程序中使用低端口 Spring web Tomcat7 上的 SNMP 陷阱接收器 正如我在这个线程中所说的Ubuntu服务器上Java程序绑定低端口 之前 我收到错误 Permission Denied 然后我将tomcat
  • 如何在不按uiimagepickercontroller上的拍照按钮的情况下自动拍照?

    在我的项目中 我需要每隔一分钟自动拍照一次 但我找不到任何解决方案 这是我实现的代码 但它不起作用 我使用 NSTimer 调用相机每 4 秒拍照一次 我只需要拍照 This method is all for the time setup
  • Oracle 中的并发性比 SQL Server 更好吗?

    Oracle 数据库是否能够比 MS SQL Server 数据库实现更好的并发性 特别是在 OLTP 场景中 例如 ERP 系统 我无意中听到一位 SAP 顾问提出了这样的说法 他提到了 Oracle 锁定技术 例如行锁定和多版本读取一致
  • 我编码的一个简单函数发生分段错误错误[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 这里我只想定义一个返回矩阵乘法的函数 其中N任意 我想生成一个矩阵new命令 当我执行该函数时 出现错误 Segmentation fault core dumped 每当我
  • 在Android webview上使用本地存储

    我正在试验 Android 代码 我想使用 HTML 5 本地存储来存储一个值 对于本练习 我使用一个像这样简单的页面 http www w3schools com html5 tryit asp filename tryhtml5 web
  • 如何监控远程目录和文件的变化?

    我正在尝试监视远程目录和文件 我需要存储或记录文件和目录的更改 即 访问 写入 打开和关闭事件 我尝试使用 pyinotify 来监视和记录这些事件 我为本地系统文件实现了它 但我的问题是如何监视远程文件和目录 我是否能够借助 ssh 或任