【发布时间】:2009-11-04 07:42:42
【问题描述】:
我正在编写一个用图像填充 cf 卡的 bash 脚本。由于只允许使用指定的卡,所以我想检查一下 USB cf 卡写入器中是否插入了正确类型的 cf 卡。
我知道可以以某种方式读出 cf 卡的供应商 ID 和固件版本(我在嵌入式系统上看到过),但我不知道如何在我的 linux 机器上实现这一点(openSUSE 10.3)和一个 USB CF 卡写入器。
还有人知道吗?
非常感谢, 克里斯
【问题讨论】:
我正在编写一个用图像填充 cf 卡的 bash 脚本。由于只允许使用指定的卡,所以我想检查一下 USB cf 卡写入器中是否插入了正确类型的 cf 卡。
我知道可以以某种方式读出 cf 卡的供应商 ID 和固件版本(我在嵌入式系统上看到过),但我不知道如何在我的 linux 机器上实现这一点(openSUSE 10.3)和一个 USB CF 卡写入器。
还有人知道吗?
非常感谢, 克里斯
【问题讨论】:
除了使用 lsusb,你还可以试试 dbus。
这是一个示例 python 代码,它应该列出硬件层次结构中的所有 scsi_host 父级。
import dbus
bus = dbus.SystemBus()
hal = bus.get_object ('org.freedesktop.Hal',
u'/org/freedesktop/Hal/Manager')
hal_manager = dbus.Interface(hal, u'org.freedesktop.Hal.Manager')
volume_udi_list = hal_manager.FindDeviceByCapability('scsi_host')
for udi in volume_udi_list:
# inspect all scsi_host devices
dev = bus.get_object ( u'org.freedesktop.Hal', udi)
volume = dbus.Interface(dev, u'org.freedesktop.Hal.Device')
# get their parent
parent = volume.GetProperty('info.parent')
dev = bus.get_object ( u'org.freedesktop.Hal', parent)
volume = dbus.Interface(dev, u'org.freedesktop.Hal.Device')
# Here we can find vendor id for usb-storage devices
props = volume.GetAllProperties()
print "\n".join(("%s: %s" % (k, props[k]) for k in props))
【讨论】:
你可以试试
cat /proc/scsi/scsi
看看你是否有有意义的信息。因为CF卡有PID/VID并不代表是USB读卡器导出的。
【讨论】:
hdparm -i /dev/sda
可以告诉您大多数 ATA 磁盘的型号、固件版本和序列号(包括,我假设是 CF“磁盘”)。
smartctl -a /dev/sda
还会告诉您很多关于随机磁盘的信息,包括型号、序列号、固件、容量,以及有关磁盘总体健康状况的一些统计数据。
我相信这适用于 CF 磁盘,就像它适用于 SATA 或 PATA 磁盘一样,尽管我现在没有可以检查的。
【讨论】:
看看lsusb或cat /proc/scsi/usb-storage/*的输出
【讨论】: