首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用看门狗

如何使用看门狗
EN

Stack Overflow用户
提问于 2017-04-28 04:02:47
回答 1查看 2.3K关注 0票数 0

使用看门狗,我希望它在某个目录中查找更新的文件,如果更新的文件,它会获取文件名并运行带有文件名的特定脚本,并将输出作为txt文件发送到另一个目录。当文本文件出现在新目录中时,以某种方式获取该文件的名称并将其设置为用于分析的变量。

例:

第一个目录/path/to/ First /dir/2017/04/27/nfcapd.20170427 <- New File (注意,不是txt文件)

脚本通过使用上面的文件名在下面的文件中获取数据。

nfdump -r nfcapd.20170427 >home/user/rmaestas/nfcapd.20170427.txt

文件名存储在一个变量中,以便与代码一起使用。

代码语言:javascript
复制
updated = 'nfcapd.21070427.txt’

filename = ('home/users/rmaestas/') #<-- insert 'updated in directory'
with open(filename, 'r') as infile:    
    next(infile) #Skips the first row, first row is not data.
    for line in infile:#read every line       
        if "Summary:" in line:#End of the data, last4 lines are a summary which won't be needed.
            break
        print(line.split()[4].rsplit(':', 1)[0])

#more code... 
EN

回答 1

Stack Overflow用户

发布于 2017-06-19 05:24:37

您需要做的是创建一个继承文件处理程序之一的类,并覆盖在更新文件时将调用的on_modified方法,如下所示

代码语言:javascript
复制
class CustomFileEventHandler(FileSystemHandler):
    def on_modified(self, event):
        file_name = event.src_path #get's the path of the modified file
        with open(file_name, "r") as infile, open("path/to/file.txt", "w") as result:
            #call your function which should return a string
            result.write(function output) #instead of print

没有必要追加“home/user/rmaestas”,因为.src_path会为您提供文件的完整路径。

然后,使用重写的FileSystemHandler,您需要设置观察者,它将实际执行与看门狗文档中给出的示例类似的监视

代码语言:javascript
复制
event_handler = CustomFileEventHandler()
observer = Observer()
observer.schedule(event_handler, "path/to/dir", recursive=False)
observer.start()
try:
    while True:
        time.sleep(1)
except KeyboardInterrupt:
    observer.stop()
observer.join()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43671762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档