Actualmente estoy trabajando en un script para borrar discos duros. El primer script ya está funcionando y comprueba si hay nuevos discos duros disponibles. Si hay un nuevo disco disponible, lo incluirá en a statuslist.txt
y lo usará areca_cli disk create drv=X
para configurarlo Pass Through
.
Dentro de statuslist.txt
todos los discos nuevos se almacenan por número de ranura y tipo de modelo. Lamentablemente, todas las entradas se enumeran en una línea en lugar de cada entrada por línea. Creo que esto está complicando las cosas para seguir trabajando con statuslist.txt
.
Entradas:
Slot#1 ST3500413AS Slot#2 SEAGATE ST32000444SS Slot#3 INTEL SSDSC2BA100G3 Slot#6 ST320LT007-9ZV142 Slot#8 SEAGATE ST32000444SS
Para el statuslist.txt
uso el siguiente comando.
slist=$(areca_cli disk info | awk -F " *" '{if ($5 != "N.A." && $7 == "Free") print($4" "$5); }')
echo $slist >> /home/user/statuslist.txt
Este es el segundo script para borrar discos duros que figuran en statuslist.txt
.
La declaración if verifica si hay entradas en el statuslist.txt
luego las usa dd
para borrarlas.
sdx=$(lsscsi | awk '{if ($5 == "R001" && $5 != "-" ) print $NF}' | awk '{ print $0}')
x=$(cat /home/user/statuslist.txt | awk '{if ( $1 ~/slot#*/)print $1}')
if [ ${#wipe[@]} -gt 0 ]; then
for i in $x; do dd if=/dev/zero of=$sdx bs=10M status=progress; done
echo "Following hard drives are getting wiped:" $x
else
echo "dd didn't work"
fi
Mis expectativas para este script son que se use dd
solo en discos duros del formato statuslist.txt
. El propósito de esta lista es evitar volver a borrar discos duros ya borrados. Las entradas de los discos duros borrados se eliminarán del archivo de texto.
El problema que tengo es la expresión regular de esta variable.
x=$(cat /home/user/statuslist.txt | awk '{if ( $0 ~/slot#*/) print $1}')
No obtengo ningún resultado.
Respuesta1
Necesitas recorrer los campos:
x=$(awk '{ for (i = 1; i < NF; i++) { if ($i ~ /^Slot#/) { print $(i + 1) } } }' /home/user/statuslist.txt)
(Esto también corrige el error tipográfico de "ranura", las mayúsculas y minúsculas son importantes).
No estoy seguro de cómo intentas usar eso en el ciclo siguiente, no estás cambiando sdx
a medida que cambias x
...