以前に CIsco ACI で「show cli list」を使って利用可能コマンド一覧を出力する というメモを書きました。 ACI 4.2(2e) がリリースされていたので、このバージョンで APIC / Leaf / Spine の show cli list
出力を取得し直したのですが、コマンドを全部貼り付けたところ、はてなブログ上で「行数が多すぎる」とエラーになってしまいました… 全コマンドを貼り付けるのは断念し、改めて show cli list
に関する注意書きだけ追記しておきます。 ACI バージョンには依存しない内容になっていると思いますが、CLI の実行例は ACI 4.2(2e) 上で取得しました。
注意点
show cli list
コマンドの注意点について記載しておきます。
iShell 上では実行できない (vsh 上から実行する)
Cisco ACI ではログインシェルとして iShell と呼ばれるプログラムが起動します。 ですが (APIC では実行可能なのですが) Leaf / Spine では iShell から show cli list
コマンドが存在せず、実行することが出来ません。 その為、Leaf / Spine の場合は従来の NX-OS でも利用されている vsh (Virtual Shell) を起動し、その後に vsh 上から show cli list
を実行します。 vsh 実行時は User should use ibash infrastructure as this will be deprecated.
と表示され、以前は iBash と呼んでいたような気がするのですが、現在はドキュメントを調べても (iBash では無く) iShell と書かれているものしか見かけないように思います (定かなことは分かりません…)。
leaf# vsh
Cisco iNX-OS Debug Shell
This shell should only be used for internal commands and exists
for legacy reasons. User should use ibash infrastructure as this
will be deprecated.
leaf# show cli list
MODE exec
clear radius session
clear radius-server statistics <str>
clear hardware internal fc-mac statistics all-ports
clear hardware internal fc-mac statistics port <int-r:1-48>
・
・
・
iShell からの間接的実行も出来ない
vsh のコマンドであっても、iShell 上から vsh 起動時に -c
オプションでコマンドを指定することで間接的に実行することが出来ます (iShell 上から vsh を起動し、指定コマンドを実行したら vsh を終了して iShell に戻ります。 従って vsh を起動 / 終了する時間、待たされます)。
leaf# vsh -c "show clock"
14:36:42.050 JST Sat Oct 12 2019
しかし、なぜか show cli list
は iShell 上から vsh へ -c
オプション経由で起動してもエラーになるわけでも無いのですが実行結果が表示されません。
leaf# vsh -c "show cli list"
leaf#
その為、show cli list
を実行する際は「vsh を起動する」「show cli list
を実行する」という、2 ステップを経る必要があります。
terminal length を指定すると結果が表示されない
Leaf / Spine の場合、vsh 上からでなければ show cli list
を実行出来ないことは上述の通りです。 更にもう一点、vsh 上であっても terminal length
が指定された状態だとなぜか show cli list
の実行結果が表示されません。 下記ではゼロを指定していますが、他の数字を指定しても同様のようです。
leaf# terminal length 0
leaf# show cli list
leaf#
この現象は「vsh を起動しなおす (exit
してから再度、vsh
する) か、もしくは terminal no length
で設定を打ち消せば解消します。
leaf# terminal no length
leaf# show cli list
MODE exec
clear radius session
clear radius-server statistics <str>
clear hardware internal fc-mac statistics all-ports
clear hardware internal fc-mac statistics port <int-r:1-48>
・
・
・
no-more を指定すると実行結果が表示されない
terminal length
が指定されていると実行結果が表示されない、と上述しましたが、terminal length
指定の有無と関係なく、no-more
を指定するとやはり実行結果が表示されません。
leaf# show cli list | no-more
leaf#
show cli list の使いどころ
show cli list
は「全部眺める」というより、例えば「何かのコマンドを探す」という用途に向いています。
例.1 - APIC でエンドポイントの削除関連コマンドを探してみる
例えば「APIC 上からエンドポイントテーブルを削除するコマンドを探したい」というケースを考えます。 この場合は「削除 → clear
」「エンドポイントテーブル → endpoint
」とあたりをつけて以下のように grep でキーワードを絞って検索してみます。
apic# show cli list | grep clear | grep endpoint
[ ][cmd ] [exec ] clear endpoints leaf <WORD> tenant <WORD> bridge-domain <WORD>
[ ][cmd ] [exec ] clear endpoints leaf <WORD> tenant <WORD> bridge-domain <WORD> vlan <NUMBER>
[ ][cmd ] [exec ] clear endpoints leaf <WORD> tenant <WORD> vrf <WORD>
「それっぽいコマンド」が見つかれば、本当にそのコマンドで当初の目的が達成出来そうか、コマンドリファレンス等を調査します。 ちなみに Leaf 上からエンドポイント情報を削除したい場合は Cisco ACI で EndPoint を手動でクリアする に記載のある通り、以下のコマンド等で削除可能です。
該当 Leaf 上の全エンドポイント情報を削除したい場合
leaf# vsh -c "clear system internal epm endpoint all"
該当 Leaf 上の特定エンドポイント情報のみ、削除したい場合
leaf# vsh -c "clear system internal epm endpoint key vrf TENANT-A:VRF-A ip 192.168.1.1"
例.2 - Leaf 上で OSPF 関連のクリアコマンドを探してみる
次は Leaf 上で OSPF 関連のクリアコマンドを探してみます。 先ほどのケースと同様に「clear
」「ospf
」といった具合でキーワードのあたりをつけ、grep
で絞り込んでいきます。
leaf# show cli list | grep clear | grep ospf
clear ip ospf <str> statistics vrf <str>
clear ip ospf <str> statistics vrf <str>
clear ip ospf <str> statistics vrf all
clear ip ospf <str> statistics
clear ip ospf <str> traffic <if> vrf <str>
clear ip ospf <str> traffic <if> vrf <str>
clear ip ospf <str> traffic <if> vrf all
・
・
・
コマンドの数 (目安)
APIC / Leaf / Spine 各々の、凡そのコマンド数は下記の通りです (※ 正確な値ではありません)。
対象 | コマンド数 | 確認したシェル |
---|---|---|
APIC | 4,651 | iShell |
Leaf | 45,628 | vsh |
Spine | 36,694 | vsh |
確認方法は以下の通りです。 単純に wc
で行数を数えているだけなのですが、コマンドによっては「1 コマンドだが、複数行の出力」になるものがある為、「1 コマンド ≠ 1 行」である為、上記の数字は「凡その概算」ということになります。
apic# show cli list | wc -l
4651
leaf# show cli list | wc lines
45628
spine# show cli list | wc lines
36694
コメント