Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos PyEZ を使用したファイルの転送

Junos PyEZ は、Junos デバイスでファイル管理タスクを実行できるユーティリティを提供します。Junos PyEZ jnpr.junos.utils.scp.SCP クラスを使用して、ローカルホストとJunosデバイス間のコピー(SCP)ファイルを保護できます。

および close() メソッドはSCPopen()、デバイスとの接続を確立および終了します。その結果、クライアント アプリケーションがファイル コピー操作のみを実行する場合、 および close() メソッドへの呼び出しをDeviceopen()省略できます。クラスのインスタンスはSCP、 および close() メソッドを自動的に呼び出すopen()コンテキストマネージャーとして使用できます。例えば:

SCP パラメーターを使用して転送の進行状況を progress 追跡できます。デフォルトでは、 SCP 進捗メッセージは印刷されません。転送完了間隔が 10% 以上の場合に、デフォルトの進捗メッセージを出力するように設定 progress=True します。

または、進行状況メッセージを印刷するカスタム関数を定義し、関数の名前と等しいパラメーターを設定 progress できます。関数の定義には、デバイス インスタンスと進捗メッセージに対応する 2 つのパラメーターを含める必要があります。例えば:

次のサンプルプログラムは、 scp-test1.txt および scp-test2.txt ファイルをローカルホストからターゲットデバイスの /var/tmp ディレクトリに転送し、ターゲットデバイスからローカルホストの ログ ディレクトリにメッセージログファイルを転送します。メッセージログの名前が変更され、デバイスホスト名がファイル名に追加されます。この例では、ローカルホストとデバイスにすでに設定されているSSHキーを認証に使用しています。

比較のために、プログラムは転送の進行状況を追跡するために、デフォルトの進行状況メッセージと、 という名前 logの関数で定義されているカスタムメッセージの両方を使用します。

転送の進行状況が標準出力に送信されます。デフォルト出力(progress=True)には、デバイス名、転送中のファイル、転送の進行状況(バイト単位と割合)の両方が含まれます。

カスタム関数は、この場合と同様の出力を生成します。

プログラムを実行した後、ターゲットデバイスで コマンドを発行 file list し、 scp-test1.txt および scp-test2.txt ファイルが正しいディレクトリにコピーされたことを確認します。

ローカルホストでは、デバイスホスト名を含むように名前が変更された メッセージ ログファイルが logs ディレクトリに存在する必要があります。

デフォルトでは、Junos PyEZ はデフォルトの SSH 設定ファイルが ~/.ssh/config(存在する場合)でクエリーを実行します。ただし、デバイスインスタンスを作成する際に、引数リストに パラメータを含めることで、別の ssh_config SSH設定ファイルを Device 指定できます。例えば:

さらに、認証用の特定の ssh_private_key_file SSHプライベートキーファイルを定義するために引数リストに Device パラメーターを含めると、 SCP インスタンスはファイル転送時に同じキーファイルを認証に使用します。

このクラスは SCP ProxyCommand のサポートも提供します。これにより、netcat をサポートする中間ホストを介してローカル ホストからターゲット デバイスにファイルを転送できます。これは、中間ホストを介してのみターゲット デバイスにログインできる場合に便利です。ProxyCommandを設定するには、SSH設定ファイルに適切な情報を追加します。例えば: