Solarisマシンでの出力をスキャンしてiostat -En
、エラーのあるディスクが見つかったときに、そのディスクに関する2行が最終出力に送信されるようにする必要があります。これはこれまでのところうまく機能します
iostat -En | grep 'Errors: [1-9]' -A 1
しかし、CD / DVDデバイスを含めようとすると、壁にぶつかります。contaxtフラグ(-A|B|C
)は機能しないようであるため、-v
これを使用することはできません。
-bash-4.0$ iostat -En | grep -B 1 -vi "CD/DVD" | grep 'Errors: [1-9]' -A 1
c0t3d0 Soft Errors: 2 Hard Errors: 0 Transport Errors: 0
Vendor: TSSTcorp Product: CD/DVDW TS-L632D Revision: SR02 Serial No:
「CD/DVD」を含む行とその前の行を削除する必要があるため、ここには出力がないはずです。これを任意の言語のスクリプトとして記述するのは簡単ですが、追加のスクリプトをインストールせずにホストで実行できる単一のコマンドである必要があるため、perl -e
使用できると思います。私はperlを知らないので、このアプローチを試していません。
出力例iostat -En
:
-bash-4.0$ iostat -En
c0t0d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: SEAGATE Product: ST973402SSUN72G Revision: 0603 Serial No: *removed*
Size: 73.40GB <73400057856 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
c0t3d0 Soft Errors: 2 Hard Errors: 0 Transport Errors: 0
Vendor: TSSTcorp Product: CD/DVDW TS-L632D Revision: SR02 Serial No:
Size: 0.00GB <0 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 2 Predictive Failure Analysis: 0
c0t1d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: SEAGATE Product: ST973402SSUN72G Revision: 0603 Serial No: *removed*
Size: 73.40GB <73400057856 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 0 Predictive Failure Analysis: 0
この場合、エラーのあるデバイスは光学ドライブだけであり、それらを気にしないため、出力はありません。
c0t1d0 Soft Errors: 0 Hard Errors: 1 Transport Errors: 0
Vendor: SEAGATE Product: ST973402SSUN72G Revision: 0603 Serial No: *removed*
これは私が探している出力です。何か案は?