I have a variable called DISK_INFO with the following contents:
diskid HGST HUSMH8010BSS204 serial no no [0] Slot00
diskid HGST HUH728080AL4204 serial no no [0] Slot02
diskid HGST HUH728080AL4204 serial no no [0] Slot03
diskid HGST HUH728080AL4204 serial no no [0] Slot04
diskid HGST HUH728080AL4204 serial no no [0] Slot05
diskid HGST HUH728080AL4204 serial no no [0] Slot06
diskid HGST HUH728080AL4204 serial no no [0] Slot07
diskid HGST HUH728080AL4204 serial no no [0] Slot08
diskid HGST HUH728080AL4204 serial no no [0] Slot09
diskid HGST HUH728080AL4204 serial no no [0] Slot10
diskid HGST HUH728080AL4204 serial no no [0] Slot11
diskid HGST HUH728080AL4204 serial no no [0] Slot12
diskid HGST HUH728080AL4204 serial no no [0] Slot13
diskid HGST HUH728080AL4204 serial no no [0] Slot14
diskid HGST HUH728080AL4204 serial no no [0] Slot15
diskid HGST HUH728080AL4204 serial no no [0] Slot16
diskid HGST HUH728080AL4204 serial no no [0] Slot17
diskid HGST HUH728080AL4204 serial no no [0] Slot18
diskid HGST HUH728080AL4204 serial no no [0] Slot19
diskid HGST HUH728080AL4204 serial no no [0] Slot20
diskid HGST HUH728080AL4204 serial no no [0] Slot21
diskid HGST HUH728080AL4204 serial no no [0] Slot22
diskid HGST HUH728080AL4204 serial no no [0] Slot23
diskid HGST HUH728080AL4204 serial no no [1] Slot00
diskid HGST HUH728080AL4204 serial no no [1] Slot01
diskid HGST HUH728080AL4204 serial no no [1] Slot02
diskid HGST HUH728080AL4204 serial no no [1] Slot03
diskid HGST HUH728080AL4204 serial no no [1] Slot04
diskid HGST HUH728080AL4204 serial no no [1] Slot05
diskid HGST HUH728080AL4204 serial no no [1] Slot06
diskid HGST HUH728080AL4204 serial no no [1] Slot07
diskid HGST HUH728080AL4204 serial no no [1] Slot08
diskid HGST HUH728080AL4204 serial no no [1] Slot09
diskid HGST HUH728080AL4204 serial no no [1] Slot10
diskid HGST HUH728080AL4204 serial no no [1] Slot11
c2t0d0 Kingston DataTraveler 2.0 - - - -
When a disk has failed it will be removed from this list, in this example the disk in enclosure 0 Slot 01 has failed.
Assuming enclosure 0 will always have 24 disks 00-23 and enclosure 1 will always have 12 disks 00-11, how can I efficiently and accurately determine the missing disk(s)?
I currently have the following but I'm sure this can be done in a single awk command:
enclosure0=($(awk '$7 ~ "[0]"{print $8}' <<<"$DISK_INFO" | sort -n))
enclosure1=($(awk '$7 ~ "[1]"{print $8}' <<<"$DISK_INFO" | sort -n))
for n in {00..23}; do
grep -q "$n" <<<"${enclosure0[@]}" || missing+=("Enclosure 0 - Slot$n")
done
for n in {00..11}; do
grep -q "$n" <<< "${enclosure1[@]}" || missing+=("Enclosure 1 - Slot$n")
done