Ich habe eine Liste von SCSI-Festplatten, die ich entfernen muss. Die Liste wird bestenfalls als zufällig angesehen und ändert sich von Zeit zu Zeit. Ich möchte alles außer einer vordefinierten Liste entfernen, die ich erstellt habe. Nehmen wir vorerst an, dass ich nur behalten möchte:
/dev/sda
/dev/sdb
Der Befehl, den ich ausführen muss, ist:
"echo 1 > /sys/block/sdX/device/delete"
Wobei X das zu entfernende Gerät ist.
Ich bin nicht gut im Bash-Scripting, daher weiß ich nicht wirklich, wo ich anfangen soll.
Um es noch einmal zusammenzufassen, ich bekomme keine DV, weil ich nicht klar bin.
Ich muss "1> / sys / block / sdX / device / delete" für jedes sdX-Gerät im System mit Ausnahme einer vorgegebenen Liste "echo".
EDIT: Nach der Antwort unten habe ich mich für diese entschieden. "LocalDisks.txt" sollte Zeilen wie "/ dev / sda" enthalten.
#!/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
quelle