AIX HMC VswitchおよびVLANの収集

AIX HMC VswitchおよびVLANの収集

HMCは各VIOサーバーとLPARのVLAN詳細を収集しています。これらのVLANをVSWITCHName=VLANIDカンマ区切りのVwsitchにグループ化する必要があります。ただし、一部のVIOサーバーには2つのVSWITCHESがあります。 forループを使用してデータを収集するので、1行にデータを表示したいと思います。

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を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

おすすめ記事