linux - 如何在 Linux 中获取所有插入设备的 USB ID

标签 linux shell usb python-2.x

我正在尝试制作一个在后台运行的 Python 脚本,并检查所有插入设备的 USB ID 以查看它是否与已识别 ID 列表相匹配。这将在 Linux 环境中运行,最好使用 Python 2.x

我知道在 linux 中我可以在 shell 中运行 lsusb 或者通过 os.system() 运行它,这将给我这个输出:

Bus 003 Device 009: ID 046d:c534 Logitech, Inc. Unifying Receiver
Bus 003 Device 007: ID 046d:082b Logitech, Inc. Webcam C170
Bus 003 Device 005: ID 1532:0043 Razer USA, Ltd 
Bus 003 Device 010: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 003 Device 008: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 003 Device 006: ID 0424:2137 Standard Microsystems Corp. 
Bus 003 Device 004: ID 0451:8044 Texas Instruments, Inc. 

但是,如您所见,返回的信息比我需要的多,过滤这些信息会很困难,而且会花费更多时间。我需要的是这样的:

046d:c534
046d:082b
1532:0043
05e3:0608
05e3:0608
0424:2137
0451:8044

为了让这个脚本尽可能快,有什么方法可以让我对系统运行命令并只取回所有插入的 USB ID,或者使用 grep或者 Python 中类似的东西以某种方式过滤它?

提前致谢!

最佳答案

PyUSB具有您需要的功能以及更多。

可以使用以下代码(兼容Python2和Python3)枚举当前连接的所有设备:

import usb.core
for dev in usb.core.find(find_all=True):
  print("%0.4X:%0.4X" % (dev.idVendor, dev.idProduct))

dev 对象将具有 VID、PID 和所有其他设备属性。 示例输出:

046D:C016
413C:2107
8087:0024

他们还得到了一个 tutorial , 如果想与 USB 设备交互

关于linux - 如何在 Linux 中获取所有插入设备的 USB ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49053646/

相关文章:

powershell - 获取 USB 端口名称和详细信息

windows - 如何编写midi驱动软件?

c++ - 使用数据包套接字在同一网络接口(interface)上发送和接收时无法接收数据包

linux - 如何将登录用户名和密码脚本放入 csh 脚本中?

android - 如何从 Android 模拟器 "remove"root 访问并在 adb 中获得正常的 shell 提示符?

bash - 排序在 bash 中无法正常工作

iphone - iPhone 上的 USB 编程

linux - xTerm 如何与包含它的 XWindows session 通信?

linux - 将多个文件插入模板

shell - 查找在 shell 中的另一个文件的五天内创建的文件