2013-04-12 2 views
0

서버에 중간 정도의 오류가있는 드라이브를 빨리 찾을 수 있도록 한 줄짜리 줄을 결합했습니다. 이 웨스턴 디지털 드라이브가 서버에 완벽하게 잘 작동하지만이 씨게이트있는 사람이고이 때문에 하나의 라이너 때문에 그들 작동하지 않습니다,하나의 라이너 수정하기

/var/lib/einarc/tools/adaptec_arcconf/cli getlogs 1 device tabular | egrep 'serialNumber|mediumErrors|vendorID' | awk '{$2="";print}' | awk '/^vendorID WDC/{p=1}p' | grep -C1 'mediumErrors [1-9]' 

:

awk '/^vendorID WDC/{p=1}p' 
이 너무 비슷

두 서버의 테이블 로그 원시 출력은 다음과 같습니다.

Western Digital: 


    driveErrorEntry    
    smartError ....................... false 
    vendorID ......................... LSI CORP 
    serialNumber ..................... 
    wwn .............................. 41121562336217ea 
    deviceID(T:L) .................... 0(0:0) 
    productID ........................ SAS2X26 
    numParityErrors .................. 0 
    linkFailures ..................... 0 
    hwErrors ......................... 0 
    abortedCmds ...................... 10 
    mediumErrors ..................... 0 
    smartWarning ..................... 0 
     driveErrorEntry    
     smartError ....................... false 
     vendorID ......................... WDC  
     serialNumber ..................... WD-WCAW25942651 
     wwn .............................. 0000000000000000 
     deviceID(T:L) .................... 13(13:0) 

씨게이트 :

Controllers found: 1 

    ControllerLog     
     controllerID ..................... 0 
     type ............................. 0 
     time ............................. 1365801225 
     version .......................... 3 
     tableFull ........................ false 

     driveErrorEntry    
     smartError ....................... false 
     vendorID ......................... LSI CORP 
     serialNumber ..................... 
     wwn .............................. 411313200032c06a 
     deviceID(T:L) .................... 0(0:0) 
     productID ........................ SAS2X26 
     numParityErrors .................. 0 
     linkFailures ..................... 0 
     hwErrors ......................... 0 
     abortedCmds ...................... 12 
     mediumErrors ..................... 0 
     smartWarning ..................... 0 

다음과 같이 내가 얻을 찾고 있어요 출력은 다음과 같습니다

serialNumber WD-WMAYP5242602 
mediumErrors 457 
vendorID WDC 
serialNumber WD-WMAYP3262235 
mediumErrors 2 

가 내가 있기 때문에 중요한 정보를 필터링하고 있지 않다 있는지 확인하려면 하나의 서버에는 WDC 드라이브가 없지만 동시에 하드 드라이브를 직접적으로 포함하지 않는 정보는 원하지 않습니다. 즉, 드라이브 출력 종류에 관계없이 컨트롤러 출력을 모두 무시해야합니다 lled.

누구나 (bash에서) 작동하는 방법을 제안 할 수 있습니까?

+2

제공된 로그에 예상 출력의 값이 없습니까? –

+0

@FredrikPihl 아니, 그냥 너 너! Striketh 귀하의 출력을 귀하의 입력에서 매핑 할 수 없습니다. –

+0

출력에는 중간 오류, 공급 업체 I 및 일련 번호가 포함되어야합니다. 열 2는 각 서버의 드라이브에 따라 항상 달라집니다. – Striketh

답변

0

여기 내 해결책이 있습니다.

/var/lib/einarc/tools/adaptec_arcconf/cli getlogs 1 device tabular | egrep 'serialNumber|mediumErrors|deviceID' | awk '{$2="";print}' | grep -C2 'mediumErrors [1-9]' 

나는 약간 그 어쨌든 더 유용하기 때문에 대신 VendorID 값의의 DeviceID을 찾아 그것을 수정하고 단순히 WDC 드라이브를 필터링 된 AWK를 제거 할 수 있습니다. -C1 대신 -C2를 사용하면 출력 형식이 예상과 조금 다르더라도 여전히 모든 데이터를 얻을 수 있습니다.

관련 문제