2

我正在尝试确定是否在 linux 发行版(修改后的 Ubuntu 10.04)上安装了 USB 存储设备(USB 记忆棒)。目前我使用 lsusb -v 命令并对其进行解析以获取我感兴趣的 USB 设备的总线、设备和 ID。

总线:001 设备:008 ID 0781:5560 SanDisk Corp.。. .

我理想中想要的是能够使用从 lsusb -v 获得的数据来确定该 USB 是否已安装。

我以前从未真正在这个领域摆弄过(它刚刚结束在我的腿上)任何指针都会受到赞赏。我看过这里和其他网站,学到了一些有趣的东西,但没有什么能让我更接近。我可以在 /proc/mount 中看到 USB 已安装,但无法将我通过 lsusb 获得的设备信息与我在 cat /proc/mount 中获得的信息相匹配,因为这将构成我需要的应用程序的一部分能够与另一个匹配。

仅供参考:该应用程序是用 python 编写的,我受到无法使用外部库(如 pyUSB)的限制。正如我所说,任何指针/帮助将不胜感激。

干杯

4

3 回答 3

1

我的建议是lsusbdmesg命令结合使用来确定是否安装了 USB 设备。

lsusb这是我的 Ubuntu 机器的示例输出dmesg。的输出dmesg包括设备编号和报告的产品/供应商信息lsusb

dbala@ubuntu:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 005: ID 0781:5530 SanDisk Corp. Cruzer U3 4gb SDCZ36

dbala@ubuntu:~$ dmesg | tail
[1084707.969418] usb 1-1: new high speed USB device number 5 using ehci_hcd
[1084708.119662] scsi5 : usb-storage 1-1:1.0
[1084709.120841] scsi 5:0:0:0: Direct-Access     SanDisk  Cruzer           1.19 PQ: 0   ANSI: 5
[1084709.125158] sd 5:0:0:0: Attached scsi generic sg2 type 0
[1084709.130677] sd 5:0:0:0: [sdb] 31266816 512-byte logical blocks: (16.0 GB/14.9 GiB)
[1084709.138819] sd 5:0:0:0: [sdb] Write Protect is off
[1084709.138821] sd 5:0:0:0: [sdb] Mode Sense: 43 00 00 00
[1084709.146812] sd 5:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[1084709.186467]  sdb: sdb1
[1084709.215365] sd 5:0:0:0: [sdb] Attached SCSI removable disk
dbala@ubuntu:~$ 
于 2013-01-22T20:39:06.790 回答
1

mount不带参数将列出所有挂载的文件系统。例如:

~ » mount                                                                                                                                                                                   wangbin@dhcp12-241
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=3988728k,nr_inodes=997182,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,seclabel,gid=5,mode=620,ptmxmode=000)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,seclabel)
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)
/dev/sda1 on / type ext4 (rw,relatime,seclabel,data=ordered)

如果您知道您的 USB 磁盘设备,例如/dev/sdb,您可以尝试在输出中搜索它:

mount | grep '/dev/sdb'
于 2013-01-23T08:48:05.907 回答
0

您可以使用:

numberOfUsb=$(lspci | grep -c USB)
echo "Number of USB controller found: $numberOfUsb"

parsedId=`lspci | grep -m 8 USB | sed "s/ .*//"`
于 2013-01-23T08:50:50.833 回答