Python について
Cisco IOS XE デバイスは、ゲスト シェル内でインタラクティブおよび非インタラクティブ(スクリプト)の両方のモードで Python バージョン 2.7 をサポートします。Python スクリプト機能により、デバイスの CLI にプログラムを使用してアクセスして、さまざまなタスク、およびゼロ タッチ プロビジョニングまたは Embedded Event Manager(EEM)アクションを実行することができます。
この製品のマニュアルセットは、偏向のない言語を使用するように配慮されています。このマニュアルセットでの偏向のない言語とは、年齢、障害、性別、人種的アイデンティティ、民族的アイデンティティ、性的指向、社会経済的地位、およびインターセクショナリティに基づく差別を意味しない言語として定義されています。製品ソフトウェアのユーザーインターフェイスにハードコードされている言語、RFP のドキュメントに基づいて使用されている言語、または参照されているサードパーティ製品で使用されている言語によりドキュメントに例外が存在する場合があります。シスコのインクルーシブランゲージに対する取り組みの詳細は、こちらをご覧ください。
このドキュメントは、米国シスコ発行ドキュメントの参考和訳です。リンク情報につきましては、日本語版掲載時点で、英語版にアップデートがあり、リンク先のページが移動/変更されている場合がありますことをご了承ください。あくまでも参考和訳となりますので、正式な内容については米国サイトのドキュメントを参照ください。
Python プログラマビリティでは、CLI を使用して IOS と対話できる Python モジュールを提供しています。
Python CLI モジュールについて
Cisco IOS XE デバイスは、ゲスト シェル内でインタラクティブおよび非インタラクティブ(スクリプト)の両方のモードで Python バージョン 2.7 をサポートします。Python スクリプト機能により、デバイスの CLI にプログラムを使用してアクセスして、さまざまなタスク、およびゼロ タッチ プロビジョニングまたは Embedded Event Manager(EEM)アクションを実行することができます。
Python は、仮想化された Linux ベースの環境であるゲスト シェルで実行されます。詳細については、「ゲスト シェル」の章を参照してください。シスコが提供する Python モジュールは、ユーザの Python スクリプトがホスト デバイス上で IOS CLI コマンドを実行することを可能にします。
デバイス上で guestshell run python コマンドを実行すると、ゲスト シェル内で、対話形式の Python プロンプトが開きます。Python の対話モードでは、Cisco Python CLI モジュールから Python 機能を実行してデバイスを設定することができます。
Device# guestshell run python
Python 2.7.5 (default, Jun 17 2014, 18:11:42)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Device#
Python スクリプト名を引数として Python コマンドで使用することで、Python スクリプトを非インタラクティブ モードで実行できます。Python スクリプトは、ゲスト シェル内からアクセス可能である必要があります。ゲスト シェルから Python スクリプトにアクセスするには、ゲスト シェル内にマウントされているブートフラッシュまたはフラッシュにスクリプトを保存します。
(注) |
Python で import cli が機能するように、ip http server コマンドを設定する必要があります。 |
次の Python スクリプトの例は、さまざまな CLI 関数を使用して show コマンドを設定および出力します。
Device# more flash:sample_script.py
import sys
import cli
intf= sys.argv[1:]
intf = ''.join(intf[0])
print "\n\n *** Configuring interface %s with 'configurep' function *** \n\n" %intf
cli.configurep(["interface loopback55","ip address 10.55.55.55 255.255.255.0","no shut","end"])
print "\n\n *** Configuring interface %s with 'configure' function *** \n\n"
cmd='interface %s,logging event link-status ,end' % intf
cli.configure(cmd.split(','))
print "\n\n *** Printing show cmd with 'executep' function *** \n\n"
cli.executep('show ip interface brief')
print "\n\n *** Printing show cmd with 'execute' function *** \n\n"
output= cli.execute('show run interface %s' %intf)
print (output)
print "\n\n *** Configuring interface %s with 'cli' function *** \n\n"
cli.cli('config terminal; interface %s; spanning-tree portfast edge default' %intf)
print "\n\n *** Printing show cmd with 'clip' function *** \n\n"
cli.clip('show run interface %s' %intf)
To run a Python script from the Guest Shell, execute the guestshell run python /flash/script.py command
at the device prompt.
The following example shows how to run a Python script from the Guest Shell:
Device# guestshell run python /flash/sample_script.py loop55
*** Configuring interface loop55 with 'configurep' function ***
Line 1 SUCCESS: interface loopback55
Line 2 SUCCESS: ip address 10.55.55.55 255.255.255.0
Line 3 SUCCESS: no shut
Line 4 SUCCESS: end
*** Configuring interface %s with 'configure' function ***
*** Printing show cmd with 'executep' function ***
Interface IP-Address OK? Method Status Protocol
Vlan1 unassigned YES NVRAM administratively down down
GigabitEthernet0/0 192.0.2.1 YES NVRAM up up
GigabitEthernet1/0/1 unassigned YES unset down down
GigabitEthernet1/0/2 unassigned YES unset down down
GigabitEthernet1/0/3 unassigned YES unset down down
:
:
:
Te1/1/4 unassigned YES unset down down
Loopback55 10.55.55.55 YES TFTP up up
Loopback66 unassigned YES manual up up
*** Printing show cmd with 'execute' function ***
Building configuration...
Current configuration : 93 bytes
!
interface Loopback55
ip address 10.55.55.55 255.255.255.0
logging event link-status
end
*** Configuring interface %s with 'cli' function ***
*** Printing show cmd with 'clip' function ***
Building configuration...
Current configuration : 93 bytes
!
interface Loopback55
ip address 10.55.55.55 255.255.255.0
logging event link-status
end
ゲスト シェルは、Python バージョン 2.7 をプリインストールしています。ゲスト シェルは、仮想化された Linux ベースの環境であり、Cisco デバイスの自動制御と管理のための Python アプリケーションを含む、カスタム Linux アプリケーションを実行するように設計されています。Montavista CGE7 がインストールされたプラットフォームは Python バージョン 2.7.11 をサポートし、CentOS 7 がインストールされたプラットフォームは Python バージョン 2.7.5 をサポートします。
次の表は、Python の各バージョンおよびサポート対象のプラットフォームに関する情報を示しています。
Python のバージョン |
プラットフォーム |
||||
---|---|---|---|---|---|
Python バージョン 2.7.5 |
Cisco Catalyst 3650 シリーズ スイッチおよび Cisco Catalyst 3850 シリーズ スイッチを除くすべてのサポート対象プラットフォーム。 |
||||
Python バージョン 2.7.11 |
|
||||
Python バージョン 3.6 |
Cisco IOS XE Amsterdam 17.1.1 以降のリリースでサポートされています。 Cisco IOS XE Amsterdam 17.1.1 および Cisco IOS XE Amsterdam 17.2.1 では、Python V2 がデフォルトです。ただし、Cisco IOS XE Amsterdam 17.3.1 以降のリリースでは、Python V3 がデフォルトです。
|
CentOS 7 がインストールされたプラットフォームは、オープン ソース リポジトリからの Redhat Package Manager(RPM)のインストールをサポートします。
Cisco CLI Python モジュールおよび EEM モジュールは、デバイスにインストール済みです。ただし、Yum または事前にパッケージ化されているバイナリのいずれかを使用して Python のバージョンを更新する場合は、シスコが提供する CLI モジュールも更新する必要があります。
(注) |
Python バージョン 2 がすでにあるデバイスで Python バージョン 3 への更新を行うと、デバイス上には両方のバージョンの Python が存在するようになります。Python を実行するには、次の IOS コマンドのいずれかを使用します。
|
Python のバージョンを更新するには、次の方法のいずれかを使用します。
スタンドアロン tarball のインストール
CLI モジュールのための PIP のインストール
関連項目 | マニュアル タイトル |
---|---|
ゲスト シェル |
|
EEM Python モジュール |
説明 | リンク |
---|---|
シスコのサポート Web サイトでは、シスコの製品やテクノロジーに関するトラブルシューティングにお役立ていただけるように、マニュアルやツールをはじめとする豊富なオンライン リソースを提供しています。 お使いの製品のセキュリティ情報や技術情報を入手するために、Cisco Notification Service(Field Notice からアクセス)、Cisco Technical Services Newsletter、Really Simple Syndication(RSS)フィードなどの各種サービスに加入できます。 シスコのサポート Web サイトのツールにアクセスする際は、Cisco.com のユーザ ID およびパスワードが必要です。 |
次の表に、このモジュールで説明した機能に関するリリース情報を示します。この表は、ソフトウェア リリース トレインで各機能のサポートが導入されたときのソフトウェア リリースだけを示しています。その機能は、特に断りがない限り、それ以降の一連のソフトウェア リリースでもサポートされます。
プラットフォームのサポートおよびシスコ ソフトウェアイメージのサポートに関する情報を検索するには、Cisco Feature Navigator を使用します。Cisco Feature Navigator にアクセスするには、www.cisco.com/go/cfn に移動します。Cisco.com のアカウントは必要ありません。
機能名 |
リリース |
機能情報 |
---|---|---|
CLI Python モジュール |
Cisco IOS XE Everest 16.5.1a |
Python プログラマビリティでは、ユーザが CLI を使用して IOS と対話できるようにする Python モジュールが提供されます。 Cisco IOS XE Everest 16.5.1a では、この機能は次のプラットフォームに実装されていました。
Cisco IOS XE Everest 16.5.1b では、この機能は次のプラットフォームに実装されていました。
|
Cisco IOS XE Everest 16.6.2 |
この機能は、Cisco Catalyst 9400 シリーズ スイッチに実装されました。 |
|
Cisco IOS XE Fuji 16.7.1 |
この機能は、次のプラットフォームに実装されていました。
|