아래는 HP새커리구성된 하드웨어 RAID 세부 정보를 보는 명령:
ssacli ctrl slot=0 show config
출력은 다음과 같습니다.
HPE Smart Array P408i-a SR Gen10 in Slot 0 (Embedded)
Internal Drive Cage at Port 1I, Box 1, OK
Internal Drive Cage at Port 2I, Box 0, OK
Port Name: 1I (Mixed)
Port Name: 2I (Mixed)
Array A (Solid State SAS, Unused Space: 0 MB)
logicaldrive 1 (447.10 GB, RAID 1, OK)
physicaldrive 1I:1:1 (port 1I:box 1:bay 1, SAS SSD, 480 GB, OK)
physicaldrive 1I:1:2 (port 1I:box 1:bay 2, SAS SSD, 480 GB, OK)
SEP (Vendor ID HPE, Model Smart Adapter) 379 (Port: Unknown)
내가 알아내야 해대량으로사용자 입력에서 얻은 일치하는 디스크 정보를 검색하여 이름을 삭제합니다. 예를 들어, 디스크 입력이 다음과 같은 경우1I:1:1그런 다음 위 명령의 출력에서 해당 문자열을 검색해야 합니다. 디스크가 사용 가능하고 일치하므로 배열 이름을 추출해야 합니다(여기서 "ㅏ') 이 어레이 매개변수를 얻은 후에는 계속해서 이 기존 RAID 구성을 삭제할 수 있습니다.
ssacli ctrl slot=0 show config | grep -B 4 '1I:1:1' | grep Array | awk '{print $2}'
위 명령의 문제점은,
값 4 중간grep -B일치하는 디스크가 출력의 배열 아래에 첫 번째, 두 번째, 세 번째 등일 수 있기 때문에 항상 그런 것은 아닙니다.
출력에 사용 가능한 여러 RAID 어레이 구성이 있을 수 있으므로 어레이가 있을 수 있습니다.ㅏ,두번째,씨잠깐만요. 가장 가까운 것을 찾아서 가져와야 합니다."대량으로" 내 입력 디스크와 일치하는 문자열
답변1
다음 Perl oneliner는 파일을 한 줄씩 읽어 물리적 드라이브 "1I:1:1"에 대한 줄을 만날 때까지 마지막 배열을 기록합니다.
ssacli ctrl slot=0 show config | perl -ne 'if ($_ =~ /Array (.)/) { $array = $1; } elsif ($_ =~ /physicaldrive 1I:1:1/) { print $array; exit; }'