J'ai une liste de disques scsi que je dois retirer. La liste est considérée au mieux comme aléatoire et change de temps en temps. Je veux tout supprimer sauf une liste prédéfinie que j'ai créée. Supposons pour l'instant que je veux seulement garder:
/dev/sda
/dev/sdb
La commande que je dois exécuter est:
"echo 1 > /sys/block/sdX/device/delete"
Où X est le périphérique à supprimer.
Je ne suis pas bon en script bash donc je ne sais pas vraiment par où commencer.
Pour récapituler, je ne reçois pas DV'd pour ne pas être clair.
J'ai besoin de "echo 1> / sys / block / sdX / device / delete" pour chaque périphérique sdX sur le système à l'exception d'une liste prédéterminée.
EDIT: Après la réponse ci-dessous, c'est ce que j'ai décidé d'utiliser. "LocalDisks.txt" devrait contenir des lignes comme "/ 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
la source