作成中のスクリプトのマルチパス出力を Linux で解析しようとしていますが、正しい SED または AWK 構文を見つけて、希望どおりに取得することができません。私はさまざまなサイトやスタックオーバーフローの例を閲覧してきましたが、あまり運がありませんでした。
私は作る方法を見つけたい:
temp (360a98000572d4d2d5834566c64536b46) dm-4 NETAPP,LUN
[size=20G]
2:0:0:4 sde 8:64 [active][ready]
1:0:0:4 sdm 8:192 [active][ready]
redo (360a98000572d4d2d5834566c646c366c) dm-3 NETAPP,LUN
[size=5.0G]
2:0:0:3 sdd 8:48 [active][ready]
1:0:0:3 sdl 8:176 [active][ready]
のように見える:
temp (360a98000572d4d2d5834566c64536b46) dm-4 NETAPP,LUN [size=20G] 2:0:0:4 sde 8:64 active][ready]
temp (360a98000572d4d2d5834566c64536b46) dm-4 NETAPP,LUN [size=20G] 1:0:0:4 sdm 8:192 [active][ready]
redo (360a98000572d4d2d5834566c646c366c) dm-3 NETAPP,LUN [size=5.0G] 2:0:0:3 sdd 8:48 [active][ready]
redo (360a98000572d4d2d5834566c646c366c) dm-3 NETAPP,LUN [size=5.0G] 1:0:0:3 sdl 8:176 [active][ready]
** 編集 OK、これをさらに難しくしているのは、Netapp のデフォルト設定のないマルチパス構成を見つけたことです。これにより、NETAPP,LUN がオンラインであることが保証されなくなります。私が始めたこと:
/sbin/multipath -ll | grep -v "round-robin"| sed 's/\[feat.*//g' | sed ':a; $!N;s/\n\([^\n]*\[size\)/ \1/;ta;P;D'
これにより、メインラインにサイズが追加され、一致する他の何かが得られます。
360a98000572d4d2d5834664e68323436 dm-6 NETAPP,LUN [size=50G]
\_ 1:0:0:0 sda 8:0 [active][ready]
360a98000572d4d2d5834664e68395951 dm-7 NETAPP,LUN [size=275G]
\_ 1:0:0:7 sdb 8:16 [active][ready]
ただし、「G[$」に一致する以下の例を取得できず (テラバイトのボリュームがある場合は、T に別の行が必要になることはわかっています)、正しい出力が得られます。
以下の皆さんの提案に感謝します **編集終了
間隔をクリーンアップする方法を知っているので、正しい出力が得られたらそれを行います。マルチパス情報を開始する行はすべて「LUN」で終わります。サーバーは、各 LUN ライン (sdx デバイス) の下に 1 ~ 8 個のパスを持つことができます。「()」の前の部分は、テキスト (エイリアス) または数値のいずれかです。