AIX HMC Vswitch 和 VLAN 集合

AIX HMC Vswitch 和 VLAN 集合

我正在从 HMC 收集每个 VIO 服务器和 LPAR 的 VLAN 详细信息。我需要将这些 VLAN 分组为一个 Vwsitch VSWITCHName=VLANID,并用逗号分隔。但某些 VIO 服务器有 2 个 VSWITCHES。我想在单行上显示数据,因为我正在使用 for 循环来收集数据。

LAB1:~> lshwres -m system-01 -r virtualio --rsubtype eth --level lpar --filter lpar_names=ABC1234 -F vswitch:port_vlan_id:addl_vlan_ids
ETHERNET0:64:
ETHERNET0:2215:52,64
ETHERNET0:3969:701,702,2152,2154
ETHERNET0:4001:

LAB1:~> lshwres -m system-01 -r virtualio --rsubtype eth --level lpar --filter lpar_names=ABCD4567 -F vswitch:port_vlan_id:addl_vlan_ids
ETHERNET1:55:
ETHERNET1:3971:51,53,55
ETHERNET1:3972:2151,2153,2155
ETHERNET1:4002:
hmclab:~> lshwres -m system-01 -r virtualio --rsubtype eth --level lpar --filter lpar_names=ABCD7890 -F vswitch:port_vlan_id:addl_vlan_ids
ETHERNET0:52:
ETHERNET0:2152:

LAB1:~> lshwres -m system-01 -r virtualio --rsubtype eth --level lpar --filter lpar_names=ABCD7869 -F vswitch:port_vlan_id:addl_vlan_ids
ETHERNET0:54:4001
ETHERNET0:3968:52,54
ETHERNET1:3969:701,702,2152,2154,5569
ETHERNET1:4002:
ETHERNET1:5001

预期输出是:ETHERNET0= 52,54,3968,etc & ETHERNET1=5001,3969.701,

答案1

如果您想连接具有相同以太网编号的线路,并用:a替换,,那么您可以将输出通过管道传输到

awk -F: '
/ETHERNET/{ i = $1; v[i] = v[i] "," $2; if($3!="")v[i] = v[i] "," $3 }
END{  n = asorti(v,x)
      for(j=1;j<=n;j++){ i = x[j]; print i "=" substr(v[i],2) }
}'

这会拆分 上的每一行:,使用第一个字段ETHERNET0 作为关联数组 的索引v,该数组收集字段 2 和 3(如果字段 3 不为空)。在输入结束时,数组的键(索引)被排序,因此我们可以从 开始输出ETHERNET0,对于每个键,我们打印它和收集的字段,省略第一个字符,它总是一个额外的逗号,因为我们总是添加它位于字段 2 之前。

将每个命令视为独立的结果是:

ETHERNET0=64,2215,52,64,3969,701,702,2152,2154,4001

ETHERNET1=55,3971,51,53,55,3972,2151,2153,2155,4002

ETHERNET0=52,2152

ETHERNET0=54,4001,3968,52,54
ETHERNET1=3969,701,702,2152,2154,5569,4002,5001

相关内容