如何在Linux中獲得可移動驅動器列表(插入USB)?如果使用KDE,GNOME或其他DE庫,我會很輕鬆。列出Linux中的所有USB驅動器
回答
我認爲一個不錯的主意是從python使用udev interface。
小例子(當然你的情況,你必須調整一些過濾):
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的好辦法。
任何理由不解釋從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,
device 001,
id "1d6b:0001",
info "Linux Foundation 1.1 root hub"
},
[2] {
bus 003,
device 001,
id "1d6b:0001",
info "Linux Foundation 1.1 root hub"
},
[3] {
bus 002,
device 001,
id "1d6b:0001",
info "Linux Foundation 1.1 root hub"
},
[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,
device 001,
id "1d6b:0002",
info "Linux Foundation 2.0 root hub"
}
]
注意Data::Printer
及其p
功能是人類只能用於檢查目的的傾倒物體。
我對perl不太好,但是......我認爲一個更好的方法(通常)是使用udev或者一些usb模塊來進行perl而不是解析'ls'命令。 – spinus 2012-12-05 20:13:51
當然,perl和python都有模塊用於這個目的,所以'lsusb'的輸出仍然有效並且能夠快速完成工作。與往常一樣,所採用的嚴格程度取決於作者和他/她的任務。 – 2012-12-05 23:22:41
這麼長的時間的問題再次得到了解鎖...
在結束後我通過d-bus接口使用UDisks像顯示here。
有時回我得到這個小腳本(它不是我的),但它確實幫助我很多投入僅供參考
#!/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
- 1. 列出VC++中的USB驅動器號
- 2. 列出Linux系統中的所有硬盤驅動器
- 3. 寫出USB驅動器
- 4. Linux USB驅動程序:中斷URBs
- 5. Linux,sysfs,usb棒和usb硬盤驅動器
- 6. C++ \ Win32的信息有關的所有驅動器:硬盤驅動器,USB驅動器,光盤驅動器,軟盤驅動器等
- 7. 從Java彈出USB驅動器
- 8. C程序檢測Linux中的USB驅動器
- 9. USB驅動器上的GIT
- 10. 列出驅動器中的所有文件數量不等?
- 11. 能夠安裝Windows/Mac OSx/Linux的可啓動USB驅動器
- 12. 蟒蛇/窗口 - 只列出USB可移動驅動器
- 13. 在啓動或啓動管理器中識別Ubuntu Linux的USB驅動器
- 14. 所有物理驅動器的列表
- 15. Linux USB驅動程序probe()問題
- 16. 一個驅動器API列出一個驅動器企業帳戶的所有驅動器不工作?
- 17. 從Linux中刪除USB主機控制器驅動程序
- 18. 在Linux中使用C掛載USB驅動器C
- 19. Android USB OTG讀取USB驅動器
- 20. 在Windows中編程區分USB軟盤驅動器和USB閃存驅動器
- 21. 查找沒有WMI的USB驅動器的序列號
- 22. ASP.NET檢測USB驅動器
- 23. 我怎樣才能得到所有USB驅動器(已插入)
- 24. 如何檢測USB閃存驅動器的盤符USB閃存驅動器的
- 25. 如何實現鼠標驅動Linux USB鼠標驅動?
- 26. 有沒有辦法在Python中列出所有可用的驅動器號?
- 27. 通過BIOS的USB硬盤驅動器/筆驅動器仿真
- 28. 在java中保護USB驅動器
- 29. 在C++中卸載USB驅動器
- 30. Linux列出所有坐騎
問題應該遷移到askubuntu – 2011-05-06 12:38:00
@Viswanathan:「Linux」是不是Ubuntu的(這當然,爲什麼有一個單獨的askubuntu網站是愚蠢的,但我離題) – geoffspear 2011-05-06 12:41:57
這是一個編程問題?因爲迄今爲止的答案與編程無關。 – Gabe 2011-05-06 13:04:49