snmpwalk出力を配列に解析する

snmpwalk出力を配列に解析する

snmpwalkを実行してネットワークインタフェースを取得しようとしていますが、配列から切り離すことはできません。変数はすべて要素0に格納されています。

ifname=(\$(snmpwalk -Oqv -v2c -c comm xxx.xxx.xxx.xxx 1.3.6.1.2.1.2.2.1.2)))

これはheredocの中にあります

どうすればいいですか?

ベストアンサー1

コードはほとんど動作します。出力:

snmpwalk -Oqv -v2c -c public (somehost) 1.3.6.1.2.1.2.2.1.2

希望の出力を生成します。配列に保存するには、組み込み関数をbash使用してください。readarray主な注意点は、パイピングがサブシェルと環境変数を処理する方法のため、readarray次のように入力をパイピングするのではなく、標準入力(通常はコマンド置換を介して)を具体的にリダイレクトする必要があることです。

readarray -t if_names < <(
  snmpwalk -Oqv -v2c -c public (somehost) 1.3.6.1.2.1.2.2.1.2
)
for i in "${!if_names[@]}"
do
    printf '%d: %s\n' "$i" "${if_names[$i]}"
done

0: public
1: vlan3
2: igb1
3: igb2
4: igb3
5: lo0
6: vm-public
7: tun0

おすすめ記事