Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Junos OS 自動化スクリプトの拡張機能について

Junos OSには、Junos OSを搭載したデバイスでスクリプト作成タスクをより簡単に実行するために、コミット、op、イベント、SNMPスクリプトで使用できる拡張機能や名前付きテンプレートなどの自動化スクリプティングツールが用意されています。ライブラリは、ロジック、データ操作、入出力、ユーティリティ関数を提供し、 XPath では実行が困難または不可能な操作を実行できます。 表 1 は、ジュニパーの拡張機能をまとめたものです。

拡張機能を使用するには、Python 自動化スクリプトはモジュールを jcs インポートする必要があります。SLAX スクリプトと XSLT スクリプトは、スタイル シート宣言で適切な名前空間 URI を宣言する必要があります。名前空間の jcs 関数は名前空間の URI http://xml.juniper.net/junos/commit-scripts/1.0 で定義され、名前空間内の slax 関数は名前空間 URI http://xml.libslax.org/slax で定義されます。

名前空間を使用したslax関数は、Junos OS リリース 12.2 以降でサポートされています。名前空間の以前のリリースに存在していた Junos OS 非依存拡張機能をjcs使用するスクリプトは、Junos OS リリース 12.2 以降の名前空間または slax 名前空間のいずれかをjcs使用できます。ただし、以前の Junos OS リリースでこれらの関数のいずれかを使用するには、スクリプトで名前空間 URI を使用するjcs必要があります。

SLAX スクリプト ステートメントによって、そのスクリプト version で使用できる関数が決定されます。特定の SLAX バージョンで導入された関数を使用するには、スクリプト version ステートメントの値が、関数が導入されたバージョンと同じかそれ以上である必要があります。たとえば、SLAX 言語のバージョン 1.1 で導入された関数は、「バージョン 1.0」ステートメントを持つ SLAX スクリプトでは使用できません。

メモ:

SLAX スクリプトは、libslax のデフォルト拡張ライブラリの追加機能を使用することもできます。詳細については、 libslax デフォルト拡張ライブラリ(ビット、curl、db、os、xutil)を参照してください。

Python 自動化スクリプトは、拡張機能機能のサブセットのみをサポートします。サポートされていない機能の多くでは、標準の Python ライブラリを使用して同じ機能を実現できます。

表 1:自動化スクリプトで使用する拡張機能

関数

ネームスペース

SLAX バージョン

説明

Python スクリプトでのサポート

base64-decode()

Slax

1.1

データ操作

BASE64エンコード済みデータをデコードし、文字列を返す。

base64-encode()

Slax

1.1

データ操作

BASE64 エンコード形式でデータのストリングをエンコードします。

break-lines()

jcs、slax

1.0

データ操作

シンプルな要素を、改行で区切られた複数の要素に分割します。

close()

jcs

1.0

ユーティリティ

以前に開いた接続ハンドルを閉じます。

dampen()

jcs、slax

1.0

ユーティリティ

スクリプト内で同じ操作を繰り返し実行しないようにします。

Y

document()

Slax

1.1

入出力制御

ファイルまたは URL からデータを読み取り、文字列を返します。

emit_change()

ユーティリティ

コミット スクリプトで設定に対する永続的または一時的な変更を生成します。

Y

emit_error()

入出力制御

コンソールでエラー メッセージを生成します。

Y

emit_snmp_attributes()

入出力制御

SNMP スクリプトから、要求された MIB オブジェクトの情報を返します。

Y

emit_warning()

入出力制御

コンソールで警告メッセージを生成します。

Y

empty()

jcs、slax

1.0

ロジック

ノードセットまたは文字列引数を評価して、空の値かどうかを判断します。

evaluate()

Slax

1.1

入出力制御

SLAX 式を評価し、結果を返します。

execute()

jcs

1.0

ユーティリティ

指定された接続ハンドルのコンテキスト内で リモート プロシージャ コール (RPC)を実行します。

first-of()

jcs、slax

1.0

ロジック

リスト内の最初の nonempty(null 以外)項目を返し、リスト内のすべてのオブジェクトが空の場合は、デフォルト式が返されます。

get-command()

jcs、slax

1.1

入出力制御

ユーザーにコマンド入力を要求し、入力を文字列として返します。

get-hello()

jcs

1.0

ユーティリティ

NETCONF セッション中にセッション ID と NETCONF サーバーの機能を返します。

get-input() (XSLT/SLAX)

get_input() (Python)

jcs、slax

1.0

入出力制御

CLI プロンプトを呼び出し、ユーザー入力を待ちます。スクリプトを対話形式で実行しない場合、関数は空の値を返します。この関数は、イベント スクリプトでは使用できません。

Y

get-protocol()

jcs

1.0

ユーティリティ

接続ハンドルに関連付けられたセッション プロトコルを返します。

get-secret() (XSLT/SLAX)

get_secret() (Python)

jcs、slax

1.0

入出力制御

CLI プロンプトを呼び出し、ユーザー入力を待ちます。入力は、ユーザーにエコーバックされません。

Y

get_snmp_action()

入出力制御

SNMP スクリプトに渡されたアクション値を取得します。

Y

get_snmp_oid()

入出力制御

SNMP スクリプトに渡された OID 値を取得します。

Y

hostname()

jcs

1.0

ユーティリティ

デバイスに DNS サーバーが構成されていれば、指定された IPv4 または IPv6 アドレスに関連付けられた完全修飾ドメイン名を返します。

Y

invoke()

jcs

1.0

ユーティリティ

Junos OS を実行しているローカル デバイスで RPC を呼び出します。

open()

jcs

1.0

ユーティリティ

RPC の実行に使用できる接続ハンドルを返します。

output()

jcs、slax

1.0

入出力制御

CLI セッションに直ちに送信される、フォーマットされていない出力テキストを生成します。

Y

parse-ip()

jcs

1.0

データ操作

IPv4またはIPv6アドレスを解析し、ホストIPアドレス、プロトコルファミリー、プレフィックス長、ネットワークアドレス、ネットワークマスクを返します。

Y

printf()

jcs、slax

1.0

入出力制御

フォーマットされた出力テキストを生成します。Junos OS 固有の一部のフォーマットに加え、ほとんどの標準 printf フォーマットがサポートされています。関数は、書式設定された文字列を返しますが、呼び出し時には出力されません。

Y

progress()

jcs、slax

1.0

入出力制御

スクリプトの呼び出し時にフラグが指定されていれば、CLI セッションに直ちに単一の引数を detail 含む進捗メッセージを発行します。

Y

regex()

jcs、slax

1.0

データ操作

指定された文字列引数に対して正規表現を評価し、任意の一致を返します。

set_routing_instance()

-

-

ユーティリティ

プロトコルソフトウェア(TCP/UDP)をプログラムして、非デフォルトルーティングインスタンスを使用します。

Y

sleep()

jcs、slax

1.0

ユーティリティ

スクリプトを指定した時間スリープ状態にする。

split()

jcs、slax

1.0

データ操作

正規表現パターンで区切られた部分文字列の配列に文字列を分割します。

sysctl()

jcs、slax

1.0

ユーティリティ

指定 sysctl された値の値を文字列または整数として返します。

Y

syslog()

jcs、slax

1.0

入出力制御

システム ログ ファイルに指定された優先度を持つメッセージをログに記録します。

Y

trace()

jcs、slax

1.0

入出力制御

トレース ファイルに送信されるトレース メッセージを発行します。

Y