使用python列出所有usb大容量存储磁盘
我的系统中几乎没有插入USB磁盘。我想列出所有这些问题,如:-使用python列出所有usb大容量存储磁盘,python,usb,detection,Python,Usb,Detection,我的系统中几乎没有插入USB磁盘。我想列出所有这些问题,如:- /dev/sdb /dev/sdc .... ans so on.. 请记住,我不想在其中列出像/dev/sdb1这样的分区。我正在寻找Linux下的解决方案。尝试了cat/proc/partitions 但它列出了所有的磁盘,无法确定哪一个是USB存储磁盘。我正在寻找一种不需要额外安装软件包的解决方案。在/dev中列出正确的路径: 您可以将Klaus D.的建议转换为Python代码,如下所示: #!/usr/bin/env p
/dev/sdb
/dev/sdc
.... ans so on..
请记住,我不想在其中列出像/dev/sdb1这样的分区。我正在寻找Linux下的解决方案。尝试了cat/proc/partitions
但它列出了所有的磁盘,无法确定哪一个是USB存储磁盘。我正在寻找一种不需要额外安装软件包的解决方案。在/dev中列出正确的路径:
您可以将Klaus D.的建议转换为Python代码,如下所示:
#!/usr/bin/env python
import os
basedir = '/dev/disk/by-path/'
print 'All USB disks'
for d in os.listdir(basedir):
#Only show usb disks and not partitions
if 'usb' in d and 'part' not in d:
path = os.path.join(basedir, d)
link = os.readlink(path)
print '/dev/' + os.path.basename(link)
路径包含以下格式的信息:
/dev/disk/by path/pci-0000:00:1d.7-usb-0:5:1.0-scsi-0:0:0
这是一个符号链接,因此我们可以使用os.readlink获得伪scsi设备名。
但它以这种格式返回信息:
../../sdc
所以我们使用os.path.basename来清理它
而不是使用
“/dev/”+os.path.basenamelink
您可以使用以下命令生成“/dev/sdc”格式的字符串
os.path.normpathos.path.joinos.path.dirnamepath,链接
但我想你会同意前一种方法更简单 到目前为止你试过什么?是否可以使用lsusb命令,或者是否连接了存储设备以外的其他USB设备?是。有时USB调制解调器也连接了。但我只想列出原始帖子中提到的USB块磁盘。很抱歉延迟。你的剧本看起来不错。但我只需要USB大容量存储磁盘。您的脚本还列出了/dev/sr1,它是一张cdrom。另外,当我检查模式以确定设备是否为大容量存储设备时,它为所有设备(包括cdrom)返回了块。下面是code mode=os.stat/dev/sdb.st_mode print的一部分mode@sundar_ima:简单的解决方案是筛选链接以消除包含“/sr”的条目,或筛选链接以仅包含与“/sd”匹配的条目。
ls -l /dev/disk/by-path/*-usb-* | fgrep -v part
#!/usr/bin/env python
import os
basedir = '/dev/disk/by-path/'
print 'All USB disks'
for d in os.listdir(basedir):
#Only show usb disks and not partitions
if 'usb' in d and 'part' not in d:
path = os.path.join(basedir, d)
link = os.readlink(path)
print '/dev/' + os.path.basename(link)