python - USB 驱动器检测 (Linux)

标签 python linux usb usb-drive

在我的 Python 程序中,我需要不断检查是否有新的 USB 驱动器连接到我的设备,运行 x86 Linux (Ubuntu)。 不要将其他 USB 设备误认为是 USB 驱动器,例如键盘、鼠标或其他任何设备。 执行此操作的最佳方法是什么?

在我的特殊情况下,我有一个自定义媒体播放器设备,该设备由运行 Linux 的 x86 单板 PC 提供支持。

最佳答案

大多数 linux 系统已经有一些机制可以检测新的 USB 设备并自动挂载它们(如果它们是存储设备)等等。您可以做的是使用 python 的 inotify 库接口(interface)来监控/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 >

参见 wiki用于教程等。


在你的情况下,你可以监视 /mnt 来检测新安装的文件系统,或者 /dev 来 发现新设备,例如 /dev/sdb/dev/sdb1。 Inotify 不是递归的,因此只返回直接在监视目录中的更改。

关于python - USB 驱动器检测 (Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32241987/

相关文章:

python - 使用 SQLAlchemy 的 MySQL Regex 查询中的括号

Python循环下载多个文件

c++ - 程序接收信号 SIGILL,非法指令

linux - Ubuntu Linux - 插入 USB 设备时生成应用程序

linux - 强制驱动程序与设备匹配

Python:如何将从列表中以某个字母开头的元素复制到新列表中或从列表中删除不以字母开头的元素

python - 限制 Keras 中使用的核心数

c - 在 C 中实现异步函数

linux - 如何将 "find"与 "grep"结合用于文件内部的特定信息并包含找到信息的文件名?

php - 使用 PHP(客户端安装)检测 USB key /驱动器