“echo 1 / sys / block / sdX / device / delete” em todos os discos, exceto na lista predeterminada

7

Eu tenho uma lista de discos scsi que preciso remover. A lista é considerada aleatória na melhor das hipóteses e muda de tempos em tempos. Eu quero remover tudo, exceto uma lista predefinida que eu criei. Vamos supor por enquanto que eu só quero manter:

/dev/sda
/dev/sdb

O comando que preciso executar é:

"echo 1 > /sys/block/sdX/device/delete"

Onde X é o dispositivo a ser removido.

Eu não sou bom em bash scripting, então eu realmente não sei por onde começar.

Para recapitular, então eu não recebo DV por não ser claro.

Eu preciso "ecoar 1 > / sys / block / sdX / device / delete" para cada dispositivo sdX no sistema, exceto por uma lista predeterminada.

EDIT: Após a resposta abaixo, é isso que eu decidi usar. "LocalDisks.txt" deve conter linhas como "/ dev / sda"

#!/bin/bash
exclude=$(cut -d/ -f3 LocalDisks.txt)

for sysfile in /sys/block/sd* ; do

dev=$(basename $sysfile)
del=$sysfile/device/delete

if [[ $exclude == *$dev* ]] ; then
    echo "Device $dev excluded"

elif [ ! -w $del ] ; then
    echo "$del does not exist or is not writable"

else
    echo 1 > $del
fi

done
    
por LVLAaron 06.02.2012 / 16:31

1 resposta

6

Aqui está uma abordagem que deve funcionar:

  • Obtenha a lista de sdX dispositivos para excluir

    exclude=$(cut -d/ -f3 exclude.txt)
    
  • Itere sobre os diretórios /sys/block/sdX :

    for sysfile in /sys/block/sd? ; do
    
  • Extraia o nome sdX desse caminho e crie o nome do arquivo delete

      dev=$(basename $sysfile)
      del=$sysfile/device/delete
    
  • Verifique se o sdX está na lista excluída:

      if [[ $exclude == *$dev* ]] ; then
        echo "Device $dev excluded"
    
  • Verifique se você tem permissões de gravação apropriadas no arquivo de exclusão

      elif [ ! -w $del ] ; then
        echo "$del does not exist or is not writable"
    
  • Faça a exclusão (não realmente)

      else
        echo "echo 1 > $del"
      fi
    
  • Você terminou!

    done
    
por 06.02.2012 / 17:34