キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
1540
閲覧回数
5
いいね!
1
返信

無線コントローラーに接続されている無線apのホスト名だけ取得

yoshihiro4416
Level 1
Level 1

標記の件を実現したいのですが、どうすればよいでしょうか。

show ap summaryとその他のオプションで指定すればできそうですが、

どう記述して良いかわかりません。

ご存じの方教えていただけますでしょうか。

よろしくお願いします。

1件の返信1

Sho Takahashi
Cisco Employee
Cisco Employee

質問の文章にて "show ap summary" コマンドという記載がありましたので、
ワイヤレスコントローラ (WLC) は Cisco Catalyst 9800 シリーズ ワイヤレスコントローラをお使いという想定で回答いたします。

残念ながら、CLI コマンドのみで無線 AP の ホスト名 だけを抽出する方法はございません。
ご指摘の通り "show ap summary" コマンドの実行結果ではホスト名以外の情報も表示されます。

WLC に従属する無線 AP の ホスト名 だけを抽出する方法として、以下 2 つの方法をご提案いたします。

  1. Web インターフェイスが備える「Excel にエクスポート」機能を利用する
  2. NETCONF / RESTCONF 等のプログラマビリティを活用する

 


1. Web インターフェイスが備える「Excel にエクスポート」機能を利用する

Catalyst 9800 シリーズ ワイヤレスコントローラには、日本語対応の Web インターフェイス(管理画面)が標準で備わっています。

Screen Shot 2022-06-24 at 15.18.52.png

画面左のメニューから [モニタリング] → [AP 統計情報] へと画面遷移していただくと、WLC に従属する無線 AP の情報が一覧で表示されます。

Screen Shot 2022-06-24 at 15.19.39.png

この表 右上にありますボタンから [Excel にエクスポート] 機能を呼び出すことができます。

Screen Shot 2022-06-24 at 15.19.59.png

エクスポートされた Excel ファイルは、このように日本語で、かつ、加工しやすいフォーマットになっています。
比較的簡単に、ホスト名だけを抽出できるかと存じます。

Screen Shot 2022-06-24 at 15.28.46.png

 


2. NETCONF / RESTCONF 等のプログラマビリティを活用する

Catalyst 9800 シリーズ ワイヤレスコントローラ上では、IOS XE が実行されています。

IOS XE では、SSH / Telnet / Webインターフェイスなどの従来の管理方法に加えて、NETCONF/RESTCONF といった次世代のネットワーク機器管理プロトコルをサポートします。

SSH や Telnet による CLI の出力結果は、人が処理することを前提として作られています。

今回のように特定のフィールドを抽出するような処理を自動化(プログラム)する場合、構文解析を行う必要があり大変な労力が必要となります。

NETCONF や RESTCONF を使うことで、プログラムが加工しやすい形式で WLC から情報を取得することができます。

 

Catalyst 9800 シリーズ ワイヤレスコントローラにおける NETCONF の説明と設定方法のドキュメントはこちらをご参照ください。

Catalyst 9800 プログラマビリティとテレメトリ導入ガイド 16.10 - NETCONF


参考までに、NETCONF を利用して WLC に従属している AP のホスト名を取得する Python サンプルコードを提示します。

from ncclient import manager
import xmltodict

c = manager.connect(
  host = '<WLC IP Address>',
  port = 830,
  username = '<username>',
  password = '<password>',
  hostkey_verify = False
)

get_filter = '''
<access-point-oper-data xmlns="http://cisco.com/ns/yang/Cisco-IOS-XE-wireless-access-point-oper">
  <capwap-data>
    <name/>
  </capwap-data>
</access-point-oper-data>
'''

data = c.get(filter=("subtree", get_filter))

ap_list = xmltodict.parse(data.xml)['rpc-reply']['data']['access-point-oper-data']['capwap-data']
print(ap_list)

c.close_session()

このプログラムを実行すると、次のような結果が出力されます。

プログラム処理しやすいデータ形式ですので、プログラムの作成が前提であればホスト名の抽出は容易かと存じます。

[{'name': 'C9117-G3'}, {'name': 'C9105-G5'}, {'name': 'C9115-G7'}, {'name': 'C9117-G1'}]