Add Python code used by watchdog
This commit is contained in:
@@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
import time
|
||||||
|
import os
|
||||||
|
from watchdog.observers import Observer
|
||||||
|
from watchdog.events import *
|
||||||
|
|
||||||
|
#CMD_MOUNT = "modprobe g_mass_storage file=/usb.bin stall=0 ro=0 removable=1 nofua=1"
|
||||||
|
#CMD_UNMOUNT = "modprobe -r g_mass_storage"
|
||||||
|
#CMD_SYNC = "sync"
|
||||||
|
CMMD = "/usr/bin/usb_drive.sh refresh"
|
||||||
|
|
||||||
|
WATCH_PATH = "/mnt/usb"
|
||||||
|
ACT_EVENTS = [DirDeletedEvent, DirMovedEvent, FileDeletedEvent, FileModifiedEvent, FileMovedEvent]
|
||||||
|
ACT_TIME_OUT = 10
|
||||||
|
|
||||||
|
class DirtyHandler(FileSystemEventHandler):
|
||||||
|
def __init__(self):
|
||||||
|
self.reset()
|
||||||
|
|
||||||
|
def on_any_event(self, event):
|
||||||
|
if type(event) in ACT_EVENTS:
|
||||||
|
self._dirty = True
|
||||||
|
self._dirty_time = time.time()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def dirty(self):
|
||||||
|
return self._dirty
|
||||||
|
|
||||||
|
@property
|
||||||
|
def dirty_time(self):
|
||||||
|
return self._dirty_time
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self._dirty = False
|
||||||
|
self._dirty_time = 0
|
||||||
|
self._path = None
|
||||||
|
|
||||||
|
|
||||||
|
# os.system(CMD_MOUNT)
|
||||||
|
|
||||||
|
evh = DirtyHandler()
|
||||||
|
observer = Observer()
|
||||||
|
observer.schedule(evh, path=WATCH_PATH, recursive=True)
|
||||||
|
observer.start()
|
||||||
|
|
||||||
|
try:
|
||||||
|
while True:
|
||||||
|
while evh.dirty:
|
||||||
|
time_out = time.time() - evh.dirty_time
|
||||||
|
|
||||||
|
if time_out >= ACT_TIME_OUT:
|
||||||
|
os.system(CMMD)
|
||||||
|
# os.system(CMD_UNMOUNT)
|
||||||
|
# time.sleep(1)
|
||||||
|
# os.system(CMD_SYNC)
|
||||||
|
# time.sleep(1)
|
||||||
|
# os.system(CMD_MOUNT)
|
||||||
|
evh.reset()
|
||||||
|
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
observer.stop()
|
||||||
|
|
||||||
|
observer.join()
|
||||||
Reference in New Issue
Block a user