Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZ を使用して Junos デバイス上のシェルにアクセスする

概要 Junos PyEZ を使用して、Junos デバイス上のシェルに接続し、コマンドを実行します。

スタートシェルの概要

Junos CLI には、多くのシェル コマンドが返す情報に類似した情報を返す動作モード コマンドが多数あります。そのため、通常、Junos デバイス上の UNIX レベル シェルにアクセスする必要はありません。ただし、場合によっては、ユーザーまたはアプリケーションがシェルにアクセスしてシェル・コマンドを実行するか、シェルから CLI コマンドを実行する必要があります。

Junos PyEZ jnpr.junos.utils.start_shell モジュールは、Junos PyEZ アプリケーションが Junos デバイスへの SSH 接続を開始し、シェルにアクセスできるようにする StartShell クラスを定義します。 StartShell メソッドを使用すると、アプリケーションは接続を介してコマンドを実行し、応答を取得できます。

StartShell open()およびclose()方法は、デバイスとのSSH接続を確立および終了します。その結果、クライアント アプリケーションがシェルのみにアクセスする必要がある場合は、Device open() メソッドと close() メソッドの呼び出しを省略できます。

Junos PyEZリリース2.6.7以前では、 StartShell インスタンスはデフォルトのSSHポート22に接続します。Junos PyEZ リリース 2.6.8 以降、シェル接続が引き続きポート 22 を使用する以下の場合を除き、 StartShell インスタンスは Device インスタンスで定義されているものと同じポートに接続します。

  • Devicehostは 'localhost' に設定されています

  • Deviceport は 830 に設定されます。

  • Deviceportは未定義です。

シェルからコマンドを実行する

StartShell run() メソッドは、シェル コマンドを実行し、応答を待ちます。既定では、メソッドは既定のシェル プロンプト (%、#、>、または $) のいずれかを待ってから、コマンド出力を返します。または、this="string" 引数を特定の文字列に設定し、メソッドはコマンド出力を返す前に、予想される文字列またはパターンを待機することもできます。

戻り値はタプルです。最初の項目は、終了コードが 0 の場合は True 、それ以外の場合は False です。2番目の項目は、コマンドの出力です。

ホストに接続し、シェルから 2 つの操作モード コマンドを実行する例を次に示します。スクリプトは、最初に request support information コマンドを実行し、出力をファイルに保存します。次に、スクリプトは show version コマンドを実行し、出力を version 変数に格納してから、変数の内容を出力します。

返されるタプルには、コマンドの終了コードと show version コマンドのコマンド出力に対応するブール値が含まれます。この例の出力は、簡潔にするために切り捨てられています。

StartShell クラスのインスタンスは、コンテキストマネージャーとしても使用できます。この場合、StartShell open() メソッドと close() メソッドを明示的に呼び出す必要はありません。例えば:

シェルの種類を指定する方法

Junos PyEZ リリース 2.6.4 以降、 StartShell では、シェルタイプを指定するために、リモートスクリプト内で shell_type 引数がサポートされています。 StartShell では、次のシェルタイプがサポートされています。

  • C シェル (csh)

  • ボーンスタイルのシェル(アッシュ)

デフォルトでは、 StartShell インスタンスは C シェル (csh) 型です。 shell_type="sh" を指定して、ボーンスタイルのシェル (ash) を開始することもできます。例えば:

タイムアウトを指定する方法

StartShell timeout 引数を含めると、ユーティリティがタイムアウトする前に予期される文字列またはパターンを待機する必要がある時間を秒単位で指定できます。タイムアウトを指定しない場合、デフォルトは 30 秒です。

予期される文字列は、 this 引数で定義されている値です。 this を定義しない場合、予期されるストリングはデフォルトのシェルプロンプトの 1 つです。代わりに特別な値 this=None を設定した場合、デバイスは、 非戻りシェルコマンドの実行で説明されているように、コマンド出力をキャプチャする前にタイムアウトの期間待機します。

コマンドの実行をずらす方法

場合によっては、 run() メソッドの複数の呼び出しを実行またはループする必要があります。出力を安定させるために、 sleep 引数を指定できます。引数 sleep は、バッファーからデータを受信する前に、指定された秒数待機するようにデバイスに指示します。 sleep 、秒未満の精度の浮動小数点数として定義できます。

返さないシェルコマンドを実行する

場合によっては、ローカルルーティングエンジンで発信または終了するトラフィックを表示する monitor traffic コマンドなどの、返さないシェルコマンドを実行する必要があります。Junos CLI では、ユーザーが Ctrl+c キーボード シーケンスを送信してパケット キャプチャを停止するまで、 monitor traffic コマンドはリアルタイムで情報を表示します。

引数 this=None を含めることで、StartShell run() メソッドを使用して非戻りシェルコマンドを実行できます。this=None 引数を含めると、メソッドは指定されたタイムアウト値まで待機して、シェルからすべてのコマンド出力を取得して返します。この場合、返されたタプルの最初の項目は、実行されたシェルコマンドの結果が内容を返すときにTrueされ、2番目の項目はコマンド出力です。this 引数を省略するか、特定の文字列またはパターンと等しく設定した場合、コマンド出力内で既定のプロンプトまたは指定された文字列パターンが検出された場合、メソッドは返されないコマンドの部分的な出力を返す可能性があります。

次のサンプル コードは、 monitor traffic interface fxp0 コマンドを実行し、15 秒間待機してから、コマンド出力を取得して返します。

変更履歴テーブル

機能のサポートは、使用しているプラットフォームとリリースによって決まります。 機能エクスプローラー を使用して、機能がプラットフォームでサポートされているかどうかを判断します。

解放
形容
2.6.8
Junos PyEZリリース2.6.8以降、ホストがlocalhostに設定されている場合、またはポートが830または未定義の場合を除いて、 StartShell インスタンスは Device インスタンスで定義されているのと同じポートに接続します。