【问题标题】:Determine if a usb is mounted using lsusb data [closed]确定是否使用 lsusb 数据安装了 USB [关闭]
【发布时间】:2013-01-22 17:08:39
【问题描述】:

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

Bus:001 DEVICE:008 ID 0781:5560 SanDisk Corp. . . .

理想情况下,我希望能够使用从 lsusb -v 获得的数据来确定该 USB 是否已安装。

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

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

干杯

【问题讨论】:

  • 如果我能弄清楚怎么做,我可能会重新打开。我找到了一种使用消息日志的方法

标签: linux linux-device-driver usb-drive


【解决方案1】:

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

这是来自我的 Ubuntu 机器的 lsusbdmesg 的示例输出。 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:~$ 

【讨论】:

    【解决方案2】:

    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)
    

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

    mount | grep '/dev/sdb'
    

    【讨论】:

      【解决方案3】:

      你可以使用:

      numberOfUsb=$(lspci | grep -c USB)
      echo "Number of USB controller found: $numberOfUsb"
      
      parsedId=`lspci | grep -m 8 USB | sed "s/ .*//"`
      

      【讨论】:

        猜你喜欢
        • 2013-09-17
        • 2011-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-20
        • 2016-11-28
        • 1970-01-01
        相关资源
        最近更新 更多