Tengo una lista de discos scsi que necesito eliminar. La lista se considera aleatoria en el mejor de los casos y cambia de vez en cuando. Quiero eliminar todo excepto una lista predefinida que he creado. Asumamos por ahora que solo quiero mantener:
/dev/sda
/dev/sdb
El comando que necesito ejecutar es:
"echo 1 > /sys/block/sdX/device/delete"
Donde X es el dispositivo que se eliminará.
No soy bueno en bash scripting, así que realmente no sé por dónde empezar.
Para recapitular, así no recibo DV'd por no ser claro.
Necesito "echo 1> / sys / block / sdX / device / delete" para cada dispositivo sdX en el sistema, excepto para una lista predeterminada.
EDITAR: Después de la respuesta a continuación, esto es lo que he decidido usar. "LocalDisks.txt" debería contener líneas 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
fuente