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. 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 scripts bash, então eu realmente não sei por onde começar.
Para recapitular para que eu não seja 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
fonte