
현재 하드 드라이브를 지우는 스크립트를 작성 중입니다. 첫 번째 스크립트는 이미 작동 중이며 사용 가능한 새 하드 드라이브가 있는지 확인합니다. 사용 가능한 새 디스크가 있으면 이를 에 나열하고 이를 설정하는 데 statuslist.txt
사용합니다 .areca_cli disk create drv=X
Pass Through
모든 새 디스크 에는 statuslist.txt
슬롯 번호와 모델 유형별로 저장됩니다. 불행하게도 모든 항목은 한 줄에 각 항목이 나열되지 않고 한 줄에 나열됩니다. 나는 이것이 statuslist.txt
.
항목:
Slot#1 ST3500413AS Slot#2 SEAGATE ST32000444SS Slot#3 INTEL SSDSC2BA100G3 Slot#6 ST320LT007-9ZV142 Slot#8 SEAGATE ST32000444SS
나는 statuslist.txt
다음 명령을 사용합니다.
slist=$(areca_cli disk info | awk -F " *" '{if ($5 != "N.A." && $7 == "Free") print($4" "$5); }')
echo $slist >> /home/user/statuslist.txt
이는 에 나열된 하드 드라이브를 지우는 두 번째 스크립트입니다 statuslist.txt
.
if 문은 항목이 있는지 확인한 다음 해당 항목 을 지우는 데 statuslist.txt
사용합니다 .dd
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
dd
이 스크립트 에 대한 나의 기대는 statuslist.txt
. 이 목록의 목적은 이미 지워진 하드 드라이브를 다시 지우는 것을 방지하는 것입니다. 지워진 하드 드라이브의 항목은 텍스트 파일에서 삭제됩니다.
내가 가진 문제는 이 변수에 대한 정규식입니다.
x=$(cat /home/user/statuslist.txt | awk '{if ( $0 ~/slot#*/) print $1}')
나는 어떤 결과도 얻지 못한다.
답변1
다음 필드를 반복해야 합니다.
x=$(awk '{ for (i = 1; i < NF; i++) { if ($i ~ /^Slot#/) { print $(i + 1) } } }' /home/user/statuslist.txt)
(이것은 "슬롯" 오타도 수정합니다. 대소문자가 중요합니다).
후속 루프에서 이를 어떻게 사용하려고 하는지 잘 모르겠습니다. sdx
변경해도 변경되지 않습니다 x
.