-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathusb_share.py
67 lines (51 loc) · 1.52 KB
/
usb_share.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
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()