Cisco IOS GuestShell

GuestShellとは

ゲストシェルは、Ciscoデバイス上でカスタムLinuxアプリケーションを実行するための仮想化されたLinuxベースの環境です。この環境は、デバイスの自動制御や管理を目的としており、Pythonを含むサードパーティ製Linuxアプリケーションのインストールや操作が可能です。

  • 環境の構成:
    • Cisco IOSコマンド guestshell enable を使用して、ゲストシェルをインストール。
    • ホストシステム(Ciscoスイッチやルータ)とカーネルを共有。
  • 機能:
    • ユーザーは、ゲストシェル内のLinuxシェルにアクセスし、スクリプトやソフトウェアパッケージを管理可能。
    • ホストファイルシステムやプロセスへの変更は不可。
  • 管理:
    • IOxを使用してゲストシェルを管理。
    • IOxは、Cisco IOS XEデバイス上でアプリケーションをシームレスにホストするためのCiscoのインフラストラクチャ。

GuestShellの有効化

管理インターフェイスでゲストシェルを有効

iox
app-hosting appid guestshell
app-vnic management guest-interface 0
end
guestshell enable

アプリケーションホスティングを使用したゲストシェルの管理

GuestShellの操作

guestshell run bashコマンドで、ゲスト シェルの bash プロンプトを開きます。Linuxコマンドが使用できます。

GuestShellでのPython

GuestShellを有効化すると、Cisco IOS上でPythonを実行することが出来るようになります。Pythonはインタプリタモードとスクリプトモードのどちらでも実行可能です。

インタプリタモード

guestshell run python3コマンドでインタプリタモードが実行できます。

スクリプトモード

GuestShell内のflash配下等にPythonスクリプトを作成や格納をして、guestshell run python3コマンドでスクリプトファイルを指定することで実行できます。

GuestShellに入りPythonスクリプトを作成します。

test_script.py
すべてのインターフェイスの状態(アップまたはダウン)をチェックし、ダウンしているインターフェイスのみを表示します。

import cli

# インターフェイスの状態を取得
output = cli.execute("show ip interface brief")

# 行ごとに分割
lines = output.splitlines()

# 各行を解析
for line in lines:
if "down" in line:
print(line)

スクリプトを実行します。

EEMでのGuestShell

EEMは、特定の条件やイベントが発生したときに自動的にアクションを実行するための仕組みですが、これを利用して、特定のトリガーに応じてGuest Shell内のPythonスクリプトを実行できます。

Guest Shellで実行するPythonスクリプトを作成

monitor_interface.pyというスクリプトを作成します。インターフェイスの状態を取得し、/bootflash/monitor_log.txtにログとして保存します。

import cli

# インターフェイスの状態をチェック
output = cli.execute("show ip interface brief")

# 状態をログに出力
with open("/home/guestshell/monitor_log.txt", "a") as log_file:
log_file.write(output + "\n")

EEMポリシーを作成

インターフェイスの状態変更(アップまたはダウン)を検出するSyslogメッセージを検知したらPythonスクリプトを実行します。

EEMポリシーの動作を確認

インターフェイスをダウンさせます。

EEMが実行されて、monitor_log.txtが保存されていました。

参考文献

Guest Shell