本文整理匯總了Python中pyinotify.IN_MODIFY屬性的典型用法代碼示例。如果您正苦於以下問題:Python pyinotify.IN_MODIFY屬性的具體用法?Python pyinotify.IN_MODIFY怎麽用?Python pyinotify.IN_MODIFY使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類pyinotify
的用法示例。
在下文中一共展示了pyinotify.IN_MODIFY屬性的9個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: linux_event_handler
# 需要導入模塊: import pyinotify [as 別名]
# 或者: from pyinotify import IN_MODIFY [as 別名]
def linux_event_handler(logger, dir_watch_data, cond, tasks):
watch_manager = pyinotify.WatchManager()
mask = pyinotify.IN_CLOSE_WRITE | pyinotify.IN_MOVED_TO | pyinotify.IN_MODIFY | pyinotify.IN_CREATE
for dir_watch in dir_watch_data:
logger.info(_(u'Watching directory %s' % dir_watch['path']))
watch_manager.add_watch(path=dir_watch['path'], mask=mask, rec=False, auto_add=True, do_glob=True)
handler = LinuxEventHandler(logger=logger, dir_watch_data=dir_watch_data, cond=cond, tasks=tasks)
notifier = pyinotify.Notifier(watch_manager, handler)
notifier.loop()
# end of linux-specific ##################################################################################
示例2: __init__
# 需要導入模塊: import pyinotify [as 別名]
# 或者: from pyinotify import IN_MODIFY [as 別名]
def __init__(self, file_created_captured, file_modified_captured):
self.WATCHDIR = u'/tmp'
self.file_created_captured = file_created_captured
self.file_modified_captured = file_modified_captured
self.wm = pyinotify.WatchManager() # Watch Manager
self.mask = pyinotify.IN_DELETE | pyinotify.IN_CREATE | pyinotify.IN_MODIFY # watched events
self.notifier = pyinotify.Notifier(self.wm, self)
self.wdd = self.wm.add_watch(self.WATCHDIR, self.mask, rec = True)
示例3: start_config_watch
# 需要導入模塊: import pyinotify [as 別名]
# 或者: from pyinotify import IN_MODIFY [as 別名]
def start_config_watch(self):
wm = pyinotify.WatchManager()
wm.add_watch('./config/mitmf.conf', pyinotify.IN_MODIFY)
notifier = pyinotify.Notifier(wm, self)
t = threading.Thread(name='ConfigWatcher', target=notifier.loop)
t.setDaemon(True)
t.start()
示例4: watch
# 需要導入模塊: import pyinotify [as 別名]
# 或者: from pyinotify import IN_MODIFY [as 別名]
def watch(self, path, func=None, delay=None, ignore=None):
flag = pyinotify.IN_CREATE | pyinotify.IN_DELETE | pyinotify.IN_MODIFY
self.wm.add_watch(path, flag, rec=True, do_glob=True, auto_add=True)
Watcher.watch(self, path, func, delay, ignore)
示例5: main
# 需要導入模塊: import pyinotify [as 別名]
# 或者: from pyinotify import IN_MODIFY [as 別名]
def main(args_ns: argparse.Namespace) -> None:
tmpdir = tempfile.mkdtemp(prefix="rcrsv-gbstr") # directory for gobuster scan results
# watch manager stores the watches and provides operations on watches
wm = pyinotify.WatchManager()
version = get_gobuster_version()
handler = EventHandler(
target=args_ns.target,
tmpdir=tmpdir,
wordlist=args_ns.wordlist,
threads=args_ns.threads,
extensions=args_ns.extensions,
devnull=args.devnull,
user=args_ns.user,
password=args_ns.password,
proxy=args_ns.proxy,
version=version,
status=args_ns.status,
)
notifier = pyinotify.Notifier(wm, handler)
# watch for file appends (found dir/file) and files closing (scan complete)
mask = pyinotify.IN_MODIFY | pyinotify.IN_CLOSE_WRITE
wm.add_watch(tmpdir, mask)
handler.run_gobuster(args_ns.target) # kick off first scan against initial target
signal.signal(signal.SIGINT, handler.cleanup) # register signal handler to handle SIGINT
notifier.loop()
示例6: code_changed
# 需要導入模塊: import pyinotify [as 別名]
# 或者: from pyinotify import IN_MODIFY [as 別名]
def code_changed(self):
notify_mask = (
pyinotify.IN_MODIFY |
pyinotify.IN_DELETE |
pyinotify.IN_ATTRIB |
pyinotify.IN_MOVED_FROM |
pyinotify.IN_MOVED_TO |
pyinotify.IN_CREATE |
pyinotify.IN_DELETE_SELF |
pyinotify.IN_MOVE_SELF
)
class EventHandler(pyinotify.ProcessEvent):
def process_default(self, event):
pass
watch_manager = pyinotify.WatchManager()
self.notifier = pyinotify.Notifier(watch_manager, EventHandler())
file_names = self.get_watch_file_names(only_new=True)
for file_name in file_names:
watch_manager.add_watch(file_name, notify_mask)
self.notifier.check_events(timeout=None)
if self.watching:
self.notifier.read_events()
self.notifier.process_events()
self.notifier.stop()
self.notifier = None
# If we are here, then one or more files must have changed
return True
return False
示例7: inotify_code_changed
# 需要導入模塊: import pyinotify [as 別名]
# 或者: from pyinotify import IN_MODIFY [as 別名]
def inotify_code_changed():
"""
Checks for changed code using inotify. After being called
it blocks until a change event has been fired.
"""
class EventHandler(pyinotify.ProcessEvent):
modified_code = None
def process_default(self, event):
if event.path.endswith('.mo'):
EventHandler.modified_code = I18N_MODIFIED
else:
EventHandler.modified_code = FILE_MODIFIED
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm, EventHandler())
def update_watch(sender=None, **kwargs):
if sender and getattr(sender, 'handles_files', False):
# No need to update watches when request serves files.
# (sender is supposed to be a django.core.handlers.BaseHandler subclass)
return
mask = (
pyinotify.IN_MODIFY |
pyinotify.IN_DELETE |
pyinotify.IN_ATTRIB |
pyinotify.IN_MOVED_FROM |
pyinotify.IN_MOVED_TO |
pyinotify.IN_CREATE |
pyinotify.IN_DELETE_SELF |
pyinotify.IN_MOVE_SELF
)
for path in gen_filenames(only_new=True):
wm.add_watch(path, mask)
# New modules may get imported when a request is processed.
request_finished.connect(update_watch)
# Block until an event happens.
update_watch()
notifier.check_events(timeout=None)
notifier.read_events()
notifier.process_events()
notifier.stop()
# If we are here the code must have changed.
return EventHandler.modified_code
示例8: inotify_code_changed
# 需要導入模塊: import pyinotify [as 別名]
# 或者: from pyinotify import IN_MODIFY [as 別名]
def inotify_code_changed():
"""
Check for changed code using inotify. After being called
it blocks until a change event has been fired.
"""
class EventHandler(pyinotify.ProcessEvent):
modified_code = None
def process_default(self, event):
if event.path.endswith('.mo'):
EventHandler.modified_code = I18N_MODIFIED
else:
EventHandler.modified_code = FILE_MODIFIED
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm, EventHandler())
def update_watch(sender=None, **kwargs):
if sender and getattr(sender, 'handles_files', False):
# No need to update watches when request serves files.
# (sender is supposed to be a django.core.handlers.BaseHandler subclass)
return
mask = (
pyinotify.IN_MODIFY |
pyinotify.IN_DELETE |
pyinotify.IN_ATTRIB |
pyinotify.IN_MOVED_FROM |
pyinotify.IN_MOVED_TO |
pyinotify.IN_CREATE |
pyinotify.IN_DELETE_SELF |
pyinotify.IN_MOVE_SELF
)
for path in gen_filenames(only_new=True):
wm.add_watch(path, mask)
# New modules may get imported when a request is processed.
request_finished.connect(update_watch)
# Block until an event happens.
update_watch()
notifier.check_events(timeout=None)
notifier.read_events()
notifier.process_events()
notifier.stop()
# If we are here the code must have changed.
return EventHandler.modified_code
示例9: _reloader_inotify
# 需要導入模塊: import pyinotify [as 別名]
# 或者: from pyinotify import IN_MODIFY [as 別名]
def _reloader_inotify(extra_files=None, interval=None):
# Mutated by inotify loop when changes occur.
changed = [False]
# Setup inotify watches
from pyinotify import WatchManager, Notifier
# this API changed at one point, support both
try:
from pyinotify import EventsCodes as ec
ec.IN_ATTRIB
except (ImportError, AttributeError):
import pyinotify as ec
wm = WatchManager()
mask = ec.IN_DELETE_SELF | ec.IN_MOVE_SELF | ec.IN_MODIFY | ec.IN_ATTRIB
def signal_changed(event):
if changed[0]:
return
_log('info', ' * Detected change in %r, reloading' % event.path)
changed[:] = [True]
for fname in extra_files or ():
wm.add_watch(fname, mask, signal_changed)
# ... And now we wait...
notif = Notifier(wm)
try:
while not changed[0]:
# always reiterate through sys.modules, adding them
for fname in _iter_module_files():
wm.add_watch(fname, mask, signal_changed)
notif.process_events()
if notif.check_events(timeout=interval):
notif.read_events()
# TODO Set timeout to something small and check parent liveliness
finally:
notif.stop()
sys.exit(3)
# currently we always use the stat loop reloader for the simple reason
# that the inotify one does not respond to added files properly. Also
# it's quite buggy and the API is a mess.