IOS Menuとは以下のようなメニュー形式の操作画面を提供する機能です。
このような画面を設ける事で、IOSの知識がない人向けの管理画面を作成したり権限を制限したりする事ができます。
Menu for NOC users 1. Display Routing Table 2. Display Running Config 3. Ping R2 4. Traceroute R2 5. Escape to Shell 6. Disconnect choose your selection:
コマンド一覧
このシナリオで重要なコマンド一覧は以下の通りです。
Router(config)# menu <menu_name> text <label> <text> Router(config)# menu <menu_name> command <label> <command> Router(config)# menu <menu_name> title <title> Router(config)# menu <menu_name> prompt <prompt> Router(config)# menu <menu_name> clear-screen Router(config)# menu <menu_name> default <label> Router(config)# menu <menu_name> single-space Router(config)# menu <menu_name> status-line Router(config)# menu <menu_name> options <label> login Router(config)# menu <menu_name> options <label> pause
構成図
以下の環境で動作確認を行います。
e0/0 e0/1 +--------+.1 .2+--------+ | R1 +--------+ R2 | +--------+ +--------+ 192.168.12.0/24 R1 Loopback0 R2 Loopback0 10.1.1.1/32 10.2.2.2/32
[R1] interface Loopback0 ip address 10.1.1.1 255.255.255.255 ! interface Ethernet0/0 ip address 192.168.12.1 255.255.255.0 ! line vty 0 4 login local [R2] interface Loopback0 ip address 10.2.2.2 255.255.255.255 ! interface Ethernet0/1 ip address 192.168.12.2 255.255.255.0
設定全文は下記ファイルです。ルーティングなどの詳細設定は下記を参照ください。
仕様説明
基本設定
以下のコマンドでメニューIOSメニューを作成する事ができます。<command>にmenu-exitを指定すると、IOS menuを離脱し通常のpromptoに戻る操作が可能になります。なお、exitまたはmenu-exitができるメニューを作成しないと、IOS menuから離脱できなくなるので注意が必要です。
Router(config)# menu <menu_name> text <label> <text> Router(config)# menu <menu_name> command <label> <command>
IOS menuは”menu <menu_name>”というコマンドを実行する事で、IOS menuモードに入ることができます。userやvty lineに対してauto commandを設定すると、ログインした瞬間にIOS menuが表示されるようになります。
Router(config)# username <user> autocommand menu <menu_name> Router(config)# line vty <num> Router(config-line)# autocommand menu <menu_name>
privilege
デフォルトの状態で、telnetログインしたユーザのprivilegeは”1″である事に注意して下さい。つまり、”show run”などのコマンドはデフォルトの状態ではIOS Menuで使用する事ができません。以下のコマンドでユーザのprivilegeを上げる事で”show run”などの特権コマンドも使用する事ができます。
Router(config)# username <user> privilege <level>
表示設定
以下のコマンドでIOS menuに関する表示などを変更することができます。
コマンド | 説明 |
---|---|
menu <menu_name> title <title> | IOS menuのタイトルを表示します。 |
menu <menu_name> prompt <prompt> | IOS menuのプロンプトを表示します。 |
menu <menu_name> clear-screen | IOS menuを表示する前にコンソールをクリアします。 |
menu <menu_name> default <label> | ラベルを選択しなかった場合にデフォルトで実行される処理を定義します。 |
menu <menu_name> single-space | 各メニュー間の改行を2つから1つに減らします |
menu <menu_name> status-line | ログインユーザのline番号を表示します。 |
menu <menu_name> options <label> login | コマンド実行前にログイン認証を求めます。 |
menu <menu_name> options <label> pause | コマンド実行前に一度メニューを表示します。 |
EEM 連携
IOS Menuは1つのコマンドしか指定する事ができませんが、EEMのevent noneを使用する事で複数のコマンドをIOS Menu経由で実行する事ができます。例えば、”en”, “conf t”, “int s0/0/0”, “shutdown”などのメンテナンス作業もEEMを使用すれば可能となります。以下のようなコマンドを用いて、メンテナンス作業を定義します。
Router(config)# event manager applet <app_name> Router(config-applet)# event none
定義したメンテナンス作業をIOS Menuから実行できるようにします。
Router(config)# menu <menu_name> text <label> <text> Router(config)# menu <menu_name> command <label> event manager run <app_name>
基本設定
設定投入
R1に以下のような設定を投入します。
[R1] menu NOC text 1. Display Routing Table menu NOC command 1. show ip route menu NOC text 2. Display Running Config menu NOC command 2. show run menu NOC text 3. Ping R2 menu NOC command 3. ping 10.2.2.2 menu NOC text 4. Traceroute R2 menu NOC command 4. traceroute 10.2.2.2 menu NOC text 5. Escape to Shell menu NOC command 5. menu-exit menu NOC text 6. Disconnect menu NOC command 6. exit ! username NOC secret NOC username NOC autocommand menu NOC
動作確認
R2からR1に接続し、IOS menuが表示される事を確認します。なお、”show run”は権限不足により実行できないようでした。
[R2] R2>telnet 192.168.12.1 Trying 192.168.12.1 ... Open User Access Verification Username: NOC Password: 1. Display Routing Table 2. Display Running Config 3. Ping R2 4. Traceroute R2 5. Escape to Shell 6. Disconnect Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set C 192.168.12.0/24 is directly connected, Ethernet0/0 10.0.0.0/32 is subnetted, 2 subnets D 10.2.2.2 [90/409600] via 192.168.12.2, 00:27:48, Ethernet0/0 C 10.1.1.1 is directly connected, Loopback0 1. Display Routing Table 2. Display Running Config 3. Ping R2 4. Traceroute R2 5. Escape to Shell 6. Disconnect Menu "NOC" has invalid command "show run" show run ^ % Invalid input detected at '^' marker.
privilege
設定投入
R1に以下コマンドを投入し、IOS Menuで”show run”が使えるようにします。
[R1] username NOC privilege 15
動作確認
IOS Menuでshow runが使用可能な事を確認します。
[R2] R2#telnet 10.1.1.1 Trying 10.1.1.1 ... Open User Access Verification Username: NOC Password: 1. Display Routing Table 2. Display Running Config 3. Ping R2 4. Traceroute R2 5. Escape to Shell 6. Disconnect Building configuration... Current configuration : 1304 bytes ! version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname R1 ! boot-start-marker boot-end-marker <omitted>
表示設定
動作確認
R1に以下のような設定を投入します。
[R1] menu NON status-line menu NOC title # Menu for NOC users # menu NOC prompt # Choose your selection: # menu NOC clear-screen menu NOC default 1. menu NOC single-space
IOS menuの表示が変わった事を確認します。
[R2] R2>telnet 192.168.12.1 Trying 192.168.12.1 ... Open User Access Verification Username: NOC Password: Menu for NOC users 1. Display Routing Table 2. Display Running Config 3. Ping R2 4. Traceroute R2 5. Escape to Shell 6. Disconnect Choose your selection:
EEM 連携
設定投入
IOS Menu経由で、R1 lo0がメンテナンスできるようなEEMを作成します。
[R1] event manager applet APP_SHUT event none action 10 cli command "en" action 20 cli command "conf t" action 30 cli command "int lo0" action 40 cli command "shut" ! event manager applet APP_NO_SHUT event none action 10 cli command "en" action 20 cli command "conf t" action 30 cli command "int lo0" action 40 cli command "no shut" ! menu NOC text 7. shutdown lo0 menu NOC command 7. event manager run APP_SHUT menu NOC text 8. no shutdown lo0 menu NOC command 8. event manager run APP_NO_SHUT
動作確認
IOS Menuを用いて R1 lo0をshutdownさせます。
[R2] R2#telnet 192.168.12.1 Trying 192.168.12.1 ... Open User Access Verification Username: NOC Password: Menu for NOC users 1. Display Routing Table 2. Display Running Config 3. Ping R2 4. Traceroute R2 5. Escape to Shell 6. Disconnect 7. shutdown lo0 8. no shutdown lo0 Choose your selection: >omitted<
IOS Menuによる操作後、想定通りR1 lo0がshutdownされている事を確認します。
[R1] R1#show ip interface brief Loopback 0 Interface IP-Address OK? Method Status Protocol Loopback0 10.1.1.1 YES NVRAM administratively down down R1#