- play_arrow 概要
- play_arrow Junos自動化スクリプトの概要
- play_arrow Junos XML 管理プロトコルと Junos XML API の概要
-
- play_arrow XSLT を使用した自動化スクリプト
- play_arrow XSLT の概要
- play_arrow 自動化スクリプトで使用される標準 XPath および XSLT 関数
- play_arrow 自動化スクリプトで使用される標準 XSLT 要素と属性
-
- play_arrow SLAX を使用した自動化スクリプティング
- play_arrow SLAX の概要
- play_arrow SLAX ステートメント
- append
- apply-imports
- apply-templates
- attribute
- attribute-set
- call
- copy-node
- copy-of
- decimal-format
- element
- else
- else if
- expr
- fallback
- for
- for-each
- function
- if
- import
- key
- match
- message
- mode
- mvar
- number
- output-method
- param
- preserve-space
- priority
- processing-instruction
- result
- set
- sort
- strip-space
- template
- terminate
- trace
- uexpr
- use-attribute-sets
- var
- version
- while
- with
- play_arrow 自動化スクリプティングのための libslax ディストリビューション
-
- play_arrow Pythonを使用した自動化スクリプティング
- play_arrow Python の概要
- Junosデバイス向けPython自動化スクリプトについて
- JunosデバイスでPython自動化スクリプトを実行するための要件
- Junos デバイスでの Python モジュールの概要
- Junos OS を搭載したデバイスでの Python インタラクティブ モードの使用方法
- psutil モジュールを使用して、Junos OS を実行しているデバイスのプロセスおよびシステム情報を取得する方法
- Junos OS を搭載したデバイスで Python 用リクエスト ライブラリを使用する方法
- Python 自動化スクリプトでの IPv6 サポート
- Junos OS Evolvedを実行しているデバイス上のPython 3アプリケーションでルーティングインスタンスを指定する方法
-
- play_arrow 自動化スクリプト入力
- play_arrow 自動化スクリプトのグローバルパラメーター
-
- play_arrow 自動化スクリプトの拡張機能と名前付きテンプレート
- play_arrow 自動化スクリプティングの拡張機能
- play_arrow jcs 名前空間と slax 名前空間の拡張関数
- base64-decode() Function (SLAX)
- base64-encode() Function (SLAX)
- break-lines() Function (SLAX and XSLT)
- close() Function (SLAX and XSLT)
- dampen() Function (Python, SLAX, and XSLT)
- document() Function (SLAX)
- emit_error() Function (Python)
- emit_snmp_attributes Function (Python)
- emit_warning() Function (Python)
- empty() Function (SLAX and XSLT)
- evaluate() Function (SLAX)
- execute() Function (SLAX and XSLT)
- first-of() Function (SLAX and XSLT)
- get-command() Function (SLAX)
- get-hello() Function (SLAX and XSLT)
- get-input() Function (SLAX and XSLT) and get_input() (Python)
- get-protocol() Function (SLAX and XSLT)
- get-secret() Function (SLAX and XSLT) and get_secret() (Python)
- get_snmp_action() Function (Python)
- get_snmp_oid() Function (Python)
- hostname() Function (Python, SLAX, and XSLT)
- invoke() Function (SLAX and XSLT)
- open() Function (SLAX and XSLT)
- output() Function (Python, SLAX, and XSLT)
- parse-ip() Function (SLAX and XSLT) and parse_ip() (Python)
- printf() Function (Python, SLAX, and XSLT)
- progress() Function (Python, SLAX, and XSLT)
- regex() Function (SLAX and XSLT)
- set_routing_instance() Function (Python)
- sleep() Function (SLAX and XSLT)
- split() Function (SLAX and XSLT)
- sysctl() Function (Python, SLAX, and XSLT)
- syslog() Function (Python, SLAX, and XSLT)
- trace() Function (Python, SLAX, and XSLT)
- play_arrow 自動化スクリプティング用の名前付きテンプレート
- play_arrow jcs 名前空間の名前付きテンプレート
-
- play_arrow 自動化スクリプトの管理
- play_arrow スクリプトの保存と有効化
- play_arrow スクリプトのリモートソースの設定
- play_arrow スクリプトのセッションプロトコルを設定する
- play_arrow スクリプトの実行の制御
- play_arrow ルーティングエンジン間でのスクリプトの同期
- play_arrow SLAX と XSLT 間でのスクリプトの変換
-
- play_arrow OP スクリプト
- play_arrow Op スクリプトの概要
- play_arrow Op スクリプトの作成と実行
- play_arrow Op スクリプトの例
- SLAX および XSLT スクリプトを使用した構成の変更
- 例: SLAX および XSLT Op スクリプトを使用した構成の変更
- 例: Python Op スクリプトを使用した設定の変更
- 例:opスクリプトを使用したshow interfaces terseコマンドの出力のカスタマイズ
- 例:op スクリプトを使用した DNS ホスト名情報の表示
- 例:opスクリプトを使用して複数の宛先へのLSPを検索する
- 例:Op スクリプトを使用した FPC の再起動
- 例: op スクリプトを使用したファイルのエクスポート
- 例: op スクリプトを使用したファイルのインポート
- 例: op スクリプトを使用したファイルの検索
- play_arrow サービステンプレート自動化を使用したサービスのプロビジョニング
- play_arrow Op スクリプトのトラブルシューティング
-
- play_arrow イベントポリシーとイベントスクリプト
- play_arrow イベントポリシーの概要
- play_arrow イベント ポリシー トリガー
- play_arrow イベント ポリシー アクション
- 動作モードコマンドを実行するイベントポリシーの設定
- 設定を変更するイベントポリシーの設定
- 例:イベント ポリシーを使用した設定の変更
- 例:イベントに応じたインターフェイス設定の変更
- イベントポリシーでのイベントスクリプトの実行
- イベントスクリプトを使用した設定の変更
- イベントスクリプトに引数を渡すためのイベントポリシーの設定
- イベントを無視するイベントポリシーの設定
- 例: 他のイベントの受信に基づくイベントの無視
- イベントポリシーを使用したSNMPトラップの発生の概要
- 例:イベントに応答してSNMPトラップを発生させる
- イベント・ポリシーでのイベント・システム・ログの優先度の理解
- 例:イベントポリシーでのイベントシステムログ優先度の設定
- 例: 特定のイベントタイプに基づくイベントスクリプト出力の制限
- play_arrow イベント ポリシー ファイルのアーカイブを構成する
- play_arrow イベントポリシー権限の構成
- play_arrow イベントスクリプトの概要
- play_arrow イベントスクリプトの作成と実行
- play_arrow トラブルシューティング : イベントポリシーとイベントスクリプト
-
- play_arrow SNMP スクリプト
- play_arrow SNMP スクリプトの概要
- play_arrow SNMPスクリプトの作成と実行
- play_arrow SNMP スクリプトの例
- play_arrow SNMPスクリプトのトラブルシューティング
-
- play_arrow 設定ステートメントと運用コマンド
このページで
例:グローバルポリシーの先頭に追加する
このコミットスクリプトの例では、 他 のインポートポリシーが適用される前に、BGPグローバルインポートポリシーがすべてのBGPインポートに適用されていることを確認します。
概要とコミット スクリプト
ほとんどの設定オブジェクトでは、Junos OS設定管理ソフトウェアが設定階層の所定の位置に設定オブジェクトを保存および表示するため、オブジェクトまたはその子が作成される順序は重要ではありません。ただし、ルーティング ポリシーやファイアウォール フィルターなどの一部の構成オブジェクトは、意図したルーティング動作を生成するために順番に処理および分析する必要がある要素で構成されています。
このコミットスクリプトの例では、他のインポートポリシーが適用される前に、BGPグローバルインポートポリシーがすべてのBGPインポートに適用されるようにします。
この例では、他の BGP インポート ポリシーの前にポリシーを自動的に付加 bgp_global_import
します。ポリシーステートメントが bgp_global_import
設定に含まれていない場合、エラーメッセージが生成され、コミット操作は失敗します。
それ以外の場合、コミット スクリプトは Junos XML プロトコル属性と XSLT 関数をposition()
使用insert="before"
して、他の適用されるポリシーに関連するグローバル BGP ポリシーの位置を制御します。属性はinsert="before"
、最初に存在するbgp_global_import
BGPインポートポリシーの前にポリシーを挿入します。
既存のデフォルトBGPインポートポリシーがない場合、グローバルポリシーが設定に含まれます。
このスクリプトの例は、XSLT と SLAX の両方の構文で示されています。
XSLT 構文
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:template match="configuration"> <xsl:if test="not(policy-options/policy-statement[name='bgp_global_import'])"> <xnm:error> <message>Policy error: Policy bgp_global_import required</message> </xnm:error> </xsl:if> <xsl:for-each select="protocols/bgp | protocols/bgp/group | protocols/bgp/group/neighbor"> <xsl:variable name="first" select="import[position() = 1]"/> <xsl:if test="$first"> <xsl:call-template name="jcs:emit-change"> <xsl:with-param name="tag" select="'transient-change'"/> <xsl:with-param name="content"> <import insert="before" name="{$first}">bgp_global_import</import> </xsl:with-param> </xsl:call-template> </xsl:if> </xsl:for-each> <xsl:for-each select="protocols/bgp"> <xsl:if test="not(import)"> <xsl:call-template name="jcs:emit-change"> <xsl:with-param name="tag" select="'transient-change'"/> <xsl:with-param name="content"> <import>bgp_global_import</import> </xsl:with-param> </xsl:call-template> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet>
SLAX 構文
version 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; match configuration { if (not(policy-options/policy-statement[name='bgp_global_import'])) { <xnm:error> { <message> "Policy error: Policy bgp_global_import required"; } } for-each (protocols/bgp | protocols/bgp/group | protocols/bgp/group/neighbor) { var $first = import[position() = 1]; if ($first) { call jcs:emit-change($tag = 'transient-change') { with $content = { <import insert="before" name="{$first}"> "bgp_global_import"; } } } } for-each (protocols/bgp) { if (not(import)) { call jcs:emit-change($tag = 'transient-change') { with $content = { <import> "bgp_global_import"; } } } } }
構成
手順
手順
スクリプトをダウンロード、有効化、テストするには、以下の手順にしたがっています。
スクリプトをテキスト ファイルにコピーし、 bgp-global-import.xsl または bgp-global-import.slax というファイルに名前を付け、デバイス上の /var/db/scripts/commit/ ディレクトリにコピーします。
以下のテスト構成スタンザを選択し、Ctrl+cを押してクリップボードにコピーします。
スクリプトの SLAX バージョンを使用している場合は、 階層レベルのファイル名を
[edit system scripts commit file]
bgp-global-import.slax に変更します。content_copy zoom_out_mapsystem { scripts { commit { allow-transients; file bgp-global-import.xsl; } } } interfaces { fe-0/0/0 { unit 0 { family inet { address 192.168.16.2/24; } family inet6 { address 2002:18a5:e996:beef::2/64; } } } } routing-options { autonomous-system 64500; } protocols { bgp { group fish { neighbor 192.168.16.4 { import [ blue green ]; peer-as 64501; } neighbor 192.168.16.6 { peer-as 64502; } } } } policy-options { policy-statement blue { from protocol bgp; then accept; } policy-statement green { then accept; } policy-statement bgp_global_import { then accept; } }
設定モードで、 コマンドを
load merge terminal
発行して、スタンザをデバイス設定にマージします。content_copy zoom_out_map[edit] user@host# load merge terminal [Type ^D at a new line to end input] ... Paste the contents of the clipboard here ...
プロンプトで、マウスと貼り付けアイコンを使用して、クリップボードの内容を貼り付けます。
Enter キーを押します。
Ctrl+dを押します。
設定をコミットします。
content_copy zoom_out_mapuser@host# commit
検証
設定の検証
目的
スクリプトが想定どおりに動作していることを確認します。
アクション
設定モードコマンドをshow protocols
発行すると、bgp_global_import
一時的な変更として追加されるため、インポートポリシーは表示されません。
[edit] user@host# show protocols bgp { group fish { neighbor 192.168.16.4 { import [ blue green ]; peer-as 64501; } neighbor 192.168.16.6 { peer-as 64502; } } }
コミット スクリプトは 階層レベルで ステートメントをimport bgp_global_import
[edit protocols bgp]
追加し、ポリシーを bgp_global_import
192.168.16.4 ネイバー ポリシー チェーンの先頭に追加します。をshow protocols | display commit-scripts
発行して、一時変更を含むすべての設定ステートメントを表示します。
[edit] user@host# show protocols | display commit-scripts bgp { import bgp_global_import; group fish { neighbor 192.168.16.4 { import [ bgp_global_import blue green ]; peer-as 64501; } neighbor 192.168.16.6 { peer-as 64502; } } }
以前はポリシーが適用されていた 192.168.16.6 ネイバーにポリシーを追加すると、 bgp_global_import
そのポリシーが先頭に追加されます。コマンドを show protocols | display commit-scripts
発行すると、一時変更を含むすべての設定ステートメントが表示されます。
[edit] user@host# set protocols bgp group fish neighbor 192.168.16.6 import green [edit] user@host# show protocols | display commit-scripts bgp { import bgp_global_import; group fish { neighbor 192.168.16.4 { import [ bgp_global_import blue green ]; peer-as 64501; } neighbor 192.168.16.6 { import [ bgp_global_import green ]; peer-as 64502; } } }