2013-04-12 30 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

輸出應包含介質錯誤,供應商編號和序列號。第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]' 

我稍微修改它來尋找設備ID,而不是VENDORID因爲這是更有益,無論如何,然後我可以簡單地刪除被過濾WDC驅動AWK。 -C2而不是-C1也可以確保即使輸出的格式與預期稍有不同,我仍然可以獲得所有的數據。