我正在尝试为我正在编写的脚本解析 linux 上的多路径输出,但我找不到正确的 SED 或 AWK 语法来获得我想要的。我一直在浏览各种网站和 stackoverflow 示例,但运气不佳。
我想找到一种方法来制作:
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]
** 编辑 好吧,让这变得更加困难,我发现没有 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'
它将 size 放在主线上,给我其他匹配的东西:
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 [$”(我知道如果有任何 TB 卷,我将需要为 T 再添加一行)并给我正确的输出。
感谢以下大家的建议**结束编辑
我知道如何清理间距,所以在我得到正确的输出后我会这样做。将开始多路径信息的行都以“LUN”结尾。服务器在每个 LUN 行(sdx 设备)下可以有 1 到 8 个路径。“()”之前的部分可以是文本(别名)或数字。