for i in $(cat HPE_FRAMES_IP); do ssh Reports@$i showsys | awk '{print $2,$5}' | column -t ; ssh Reports@$i showpd -degraded -failed | awk '{print $1,$2,$3,$5}' ; done | grep -v "MiB" | grep -v "total"
--Name--- Nodes
AN4ZX8401 MXN6232L4X
No PDs listed
----Name----- Nodes
bga1ZX84-3128 4C17253128
No PDs listed
---Name--- Nodes
ZZ2ZX20841 CZ3741XP9X
No PDs listed
--Name--- Nodes
ZZ2ZX8401 MXN6102C7F
No PDs listed
--Name--- Nodes
ZZ2ZX8402 2MT814A12A
No PDs listed
--Name--- Nodes
CR3ZX8401 2M263601BJ
Id CagePos Type State
175 9:15:0 FC failed
---Name--- Nodes
ZZZZX20841 CZ3741X5K8
Id CagePos Type State
18 4:2:0 SSD degraded
-------Name------- Nodes
ZZZZX8401_Full_DNA MXN54823JY
No PDs listed
--Name--- Nodes
ZZZZX8402 MXN6102CAF
No PDs listed
-------Name------- Nodes
ZZZZX8403_Full_DNA MXN6192JEW
No PDs listed
次のコードは目的の出力を提供しますが、次の形式を使用してこの出力をCSVファイルにリダイレクトする必要があります。
showpdおよびshowsysコマンドの実際の出力が低下または失敗した場合にのみ出力を印刷したいと思います。
必要な出力は次のようになります。
--Name---,Nodes
CR3ZX8401,2M263601BJ
Id,CagePos,Type,State
175,9:15:0,FC,failed
---Name---,Nodes
ZZZZX20841,CZ3741X5K8
Id,CagePos,Type,State
18,4:2:0,SSD,degraded
質問は次のように更新されます。
showpd出力にはパフォーマンスが低下し、失敗した出力が複数ある場合がありますが、この場合-B3を使用した印刷は機能しません...
'---Name---,Nodes
FM1HP20841,CZ3741X5K8
Id,CagePos,Type,State
18,4:2:0,SSD,degraded
18,4:2:1,SSD,failed
答え1
この試み、
for i in $(cat HPE_FRAMES_IP); do ssh Reports@$i showsys | awk '{print $2","$5}' ; ssh Reports@$i showpd -degraded -failed | awk '{print $1","$2","$3","$5}' ; done | grep -v "MiB" | grep -v "total" | egrep -B3 "failed|degraded" | sed 's/---Name/\n---Name/g' > file.csv
- カンマを二重引用符で囲みます。
awk
- 削除する
column
- 次に、キーワードを使用してgrepを展開します。
-B3
一致するキーワードの前に3行を印刷します。sed
期待される出力として、「名前」の前に新しい行を追加することです。
答え2
Grepはここであなたを助けます:
for i in $(cat HPE_FRAMES_IP); do ssh Reports@$i showsys | awk '{print $2,$5}' | column -t ; ssh Reports@$i showpd -degraded -failed | awk '{print $1,$2,$3,$5}' ; done | grep -v "MiB" | grep -v "total" | grep -B 4 -iE "failed|degraded"
改訂する:
パイプによる出力grep -B 4 -iE "失敗 | ダウングレード"