Verifique se há discos adicionados ao sistema

1

Então, estou trabalhando em um script que basicamente verifica se um disco foi adicionado ao sistema e, em caso afirmativo, faça algo com ele (como formatá-lo ou o que for).

Então, a questão principal é ... como faço para listar discos (ou dev) que NÃO possuem partições?

Eu posso listá-los com:

fdisk -l | grep -o '/dev/sd[a-z][0-5]'
/dev/sda1
/dev/sda2
/dev/sda5
/dev/sdb1

Como posso listar os discos que não possuem nenhuma partição? Eu tentei algo assim:

# fdisk -l | grep -o '/dev/sd[a-z][^0-5]'
/dev/sda:
/dev/sdb:
/dev/sdc:

mas ainda recebo discos como sda e sdb que possuem partições. Eu só quero tirar sdc , que é o único que não tem partição e não está sendo usado no sistema. Razão que eu quero fazer isso é para que eu possa colocá-lo em um script bash.

    
por user3311890 19.09.2018 / 17:41

1 resposta

2

Um loop rápido e sujo fazendo isso:

#!/bin/bash
# get all disks into an array
disks=($(ls  /dev/sd* | grep -v '[0-9]')) 

# loop over disks in array
for i in $(echo ${disks[@]}); do
    # check if it has a partition
    diskcheck=$(ls ${i}* | grep '[0-9]')
    # if not, print it
    if [ -z "$diskcheck" ]; then
        echo $i
    fi
done
    
por 19.09.2018 / 17:53