Ho un elenco di dischi scsi che devo rimuovere. L'elenco è considerato nel migliore dei casi casuale e cambia di volta in volta. Voglio rimuovere tutto tranne un elenco predefinito che ho creato. Supponiamo per ora che voglio solo mantenere:
/dev/sda
/dev/sdb
Il comando che devo eseguire è:
"echo 1 > /sys/block/sdX/device/delete"
Dove X è il dispositivo da rimuovere.
Non sono bravo a bash scripting quindi non so davvero da dove cominciare.
Ricapitolando, quindi non ricevo DV per non essere chiaro.
Ho bisogno di "echo 1> / sys / block / sdX / device / delete" per ogni dispositivo sdX sul sistema ad eccezione di un elenco predeterminato.
EDIT: dopo la risposta di seguito, questo è quello che ho deciso di utilizzare. "LocalDisks.txt" dovrebbe contenere righe come "/ 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