AIX HMC Vswitch e coleção de VLAN

0

Estou coletando os detalhes da VLAN para cada servidor VIO e LPAR do HMC. Eu precisaria agrupar essas VLANs como um Vwsitch como VSWITCHName=VLANID , separadas por vírgula. Mas alguns servidores VIO possuem 2 VSWITCHES. Eu gostaria de exibir os dados em uma única linha como eu estou usando para loop para coletar os dados.

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

A saída esperada é: ETHERNET0= 52,54,3968,etc & ETHERNET1=5001,3969.701, etc

    
por satsensort 26.04.2018 / 08:06

1 resposta

0

Se você quiser unir as linhas com o mesmo número de ethernet e substituir o : por , , então você pode canalizar a saída para

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) }
}'

Isso divide cada linha em : , usa o primeiro campo ETHERNET0 como um índice em uma matriz associativa v , que coleta os campos 2 e 3 (se o campo 3 não estiver vazio). Ao final da entrada, as chaves (índices) da matriz são ordenadas para que possamos iniciar a saída com ETHERNET0 , e para cada tecla imprimimos e os campos coletados, omitindo o primeiro caracter que é sempre uma vírgula extra, desde nós sempre adicionamos antes do campo 2.

O resultado, tratando cada um dos seus comandos como independentes, é:

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
    
por 26.04.2018 / 20:12