# 網頁置換WatchDog實作測試
###### tags: `Security`
* 官方網站
https://python-watchdog.readthedocs.io/en/stable/quickstart.html
* 環境準備
安裝 pip
https://www.delftstack.com/zh-tw/howto/linux/how-to-install-the-pip-package-manager-on-ubuntu/
下載watchdog
pip install -U watchdog
* 執行
python3 watchdog2.py
將會監控python執行檔案的區塊進行監控該區塊的所有跟sub dir進行監控異動
可以額外增加參數,就可以指定該目錄底下所有檔案才會監測
python3 watchdog2.py /home/xxx/subdir
以下是console呈現的結果:
> xx@localhost:~/文件$ python3 watchdog2.py
> 2022-08-12 13:51:00 - Modified file: ./logseq/.git
> 2022-08-12 13:51:00 - Modified file: ./logseq/.git
> 2022-08-12 13:51:00 - Modified directory: ./logseq
> 2022-08-12 13:51:03 - Created file: ./新檔案
> 2022-08-12 13:51:03 - Modified directory: .
> 2022-08-12 13:51:03 - Modified directory: .
> 2022-08-12 13:51:23 - Deleted file: ./新檔案
> 2022-08-12 13:51:23 - Modified directory: .
* 改寫為log檔案產出
本次日誌改用append模式,寫入file,加料的字串是準備塞入主機名稱
```
import sys
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO, format='%(asctime)s, '+ '加料'+ ', %(message)s', datefmt='%Y-%m-%d %H:%M:%S',encoding='utf-8',filemode = 'a' , filename = 'monitor.csv')
path = sys.argv[1] if len(sys.argv) > 1 else '.'
event_handler = LoggingEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while observer.is_alive():
observer.join(1)
finally:
observer.stop()
observer.join()
```
* 改寫增加監控的dir數量
* Error
Error 1 python執行檔案與watchdog lib同名
https://stackoverflow.com/questions/63219913/no-module-named-watchdog-observers-watchdog-is-not-a-package
Error 2 Sample Code有錯誤
```
import sys
import logging
from watchdog.observers import Observer
from watchdog.events import LoggingEventHandler
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO,
format='%(asctime)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S')
path = sys.argv[1] if len(sys.argv) > 1 else '.'
event_handler = LoggingEventHandler()
observer = Observer()
observer.schedule(event_handler, path, recursive=True)
observer.start()
try:
while observer.is_alive(): //這行有修正,從isAlive更正
observer.join(1)
finally:
observer.stop()
observer.join()
```
Error 2 ip抓到127.0.0.1
> import socket
> print(socket.gethostbyname(socket.gethostname()))
https://www.delftstack.com/zh-tw/howto/python/get-ip-address-python/
* reference
https://medium.com/analytics-vidhya/monitoring-your-file-system-using-watchdog-64f7ad3279f