如何在linux中获得可移动驱动器列表(插入USB)? 如果使用KDE,GNOME或其他DE库,我会很容易。
我认为一个好主意是使用Python的udev接口 。
小例子(当然你的情况你有调整一些过滤):
In [1]: import pyudev In [2]: pyudev.Context() In [3]: ctx = pyudev.Context() In [4]: List(ctx.List_devices(subsystem='usb')) Out[4]: [Device(u'/sys/devices/pci0000:00/0000:00:1a.0/usb2'),Device(u'/sys/devices/pci0000:00/0000:00:1a.0/usb2/2-0:1.0'),Device(u'/sys/devices/pci0000:00/0000:00:1a.0/usb2/2-2'),
在大多数情况下,这是一个很好的方法,因为新的系统使用udev。
毕竟这个问题再次被解锁了
最后,我通过D-Bus接口使用了Udisks,如下所示。
任何理由不解析lsusb的结果? 我确信有这个模块,但是再次,容易有时是最好的。
我不能用Python来帮你,在Perl中我可能会这样做:
#!/usr/bin/env perl use strict; use warnings; my @data; foreach (`lsusb`) { next unless /Bus (S+) Device (S+): ID (S+) (.*)/; push @data,{ bus => $1,device => $2,ID => $3,info => $4 }; } use Data::Printer; p @data;
在我的电脑上,结果是
[ [0] { bus 005,device 001,ID "1d6b:0001",info "linux Foundation 1.1 root hub" },[1] { bus 004,[2] { bus 003,[3] { bus 002,[4] { bus 001,device 003,ID "0bda:0158",info "Realtek Semiconductor Corp. USB 2.0 multicard reader" },[5] { bus 001,device 002,ID "064e:a129",info "Suyin Corp. " },[6] { bus 001,ID "1d6b:0002",info "linux Foundation 2.0 root hub" } ]
请注意, Data::Printer及其p函数仅用于检查目的是人性化的对象转储。
有时候,我得到了这个小脚本(这不是我的),但它确实帮助我只是为了参考
#!/usr/bin/python import sys import usb.core # find USB devices dev = usb.core.find(find_all=True) # loop through devices,printing vendor and product IDs in decimal and hex for cfg in dev: try: #print dir(cfg) sys.stdout.write('Decimal vendorID=' + str(cfg.IDvendor) + ' & ProductID=' + str(cfg.bDeviceClass) + ' ' + str(cfg.product) + ' ' + str(cfg.bDeviceSubClass)+ ' ' + str(cfg.manufacturer)+'n') except: print
总结以上是内存溢出为你收集整理的列出Linux中的所有USB驱动器全部内容,希望文章能够帮你解决列出Linux中的所有USB驱动器所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)