检测块设备是本地磁盘还是可移动USB磁盘

时间:2014-09-03 07:03:06

标签: linux bash shell disk

有没有办法检测块设备(如/ dev / sda或/ dev / sdc)是否与本地磁盘(scsi或sata我的意思)或可移动USB磁盘相关?

我正在编写一个shell脚本,必须只检测本地磁盘阻塞设备,不包括任何可移动磁盘。

谢谢!

2 个答案:

答案 0 :(得分:1)

使用lshw

lshw -class disk -class storage

并查找bus info字符串。

答案 1 :(得分:0)

您可以使用Linux设备管理器udev

查询每个块设备将显示有关它的一些信息,包括总线,您可以使用该信息来识别该设备是否为可移动USB设备。

这是脚本:

for device in /sys/block/sd*; do
  device_info="$(udevadm info --query=property --path=$device)"

  device_name=$(echo "$device_info" | perl -ne 'print "$1" if /^DEVNAME=(.*)/')
  device_bus=$(echo "$device_info" | perl -ne 'print "$1" if /^ID_BUS=(.*)/')

  echo "Device $device_name bus: $device_bus"
done

这是一个示例结果:

Device /dev/sda bus: ata
Device /dev/sdb bus: ata
Device /dev/sdc bus: usb