サーバー上で中程度のエラーが発生しているドライブをすばやく見つけることができるように、ワンライナーをまとめました。これは次のようになります。
/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]'
これは、Western Digital ドライブを搭載したサーバーでは問題なく機能しますが、Seagate のサーバーでは次の理由によりワンライナーが機能しません。
awk '/^vendorID WDC/{p=1}p'
2 つのサーバーの表形式のログの生の出力は、次のようになります。
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 ドライブがないため、重要な情報を除外していないことを確認したいのですが、同時に、ハードドライブに直接関係しない情報、つまりコントローラーは必要ありません。インストールされているドライブの種類に関係なく、出力はすべて無視する必要があります。
(bashで)これを行う方法を誰かが提案できますか?