Como determinar se o disco é compact flash ou disco rígido padrão

5

Eu preciso determinar em um script de shell se um determinado dispositivo de bloco (por exemplo, /dev/sda ) for um disco flash compacto ou um disco rígido comum. O Google não me ajudou de uma vez, e enquanto udevadm info --query=all --name=sda me dá muitas informações, não há nada que eu reconheça que signifique "estou definitivamente (não) um pen drive" ou "estou definitivamente (não) em um disco rígido ".

É possível distinguir esses dois tipos de dispositivos de armazenamento?

Eu uso o Ubuntu 10.10.

    
por Lauritz V. Thaulow 06.04.2011 / 17:05

1 resposta

2

Parece provável (embora possa haver ressalvas) que isso irá diferenciar entre dispositivos de armazenamento baseados em flash e discos rígidos tradicionais:

is_compact_flash ()
{
    hdparm -I $1 | sed -n '\_Commands/features:_,\_Security:_p' | \
        grep -q CFA && return 0 || return 1
}

disk=/dev/sda
if is_compact_flash $disk; then
    echo "$disk is a compact flash disk"
else
    echo "$disk is not a compact flash disk"
fi

EDITAR: Adicionado o comando sed para proteção contra o modelo ou serial contendo CFA.

    
por 07.04.2011 / 10:34