В большинстве Linux-систем уже есть какой-то механизм, который обнаруживает новые USB-устройства и автоматически монтирует их, если они являются устройствами хранения, и так далее. Что вы можете сделать, так это использовать интерфейс Python для библиотеки inotify для мониторинга /mnt или /dev.
Чтобы увидеть, как это работает, установите inotify-tools
или пакет с аналогичным именем, и вы можете сделать:
$ inotifywait -m -e create /tmp &
Эта команда отслеживает (-m) /tmp создание (-e create) новых файлов или каталогов. Например, touch /tmp/x
, и он выведет
/tmp/ CREATE x
Вы можете сделать то же самое из python и его python-inotify
или аналогичного пакета. Есть команда pyinotify
, но с большей пользой вы можете написать эквивалентную программу на python:
import pyinotify
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm)
wm.add_watch('/tmp', pyinotify.IN_CREATE)
notifier.loop()
Когда вы rm и воссоздаете /tmp/x, это печатает:
<Event dir=False mask=0x100 maskname=IN_CREATE name=x path=/tmp pathname=/tmp/x wd=1 >
См. вики для получения руководства и т. д.
В вашем случае вы можете отслеживать /mnt
для обнаружения недавно смонтированных файловых систем или /dev
для обнаружения новых устройств, таких как /dev/sdb
и /dev/sdb1
. Inotify не является рекурсивным, поэтому возвращаются только изменения непосредственно в отслеживаемом каталоге.
person
meuh
schedule
27.08.2015