示例:生成自定义警告消息
Junos OS 提交脚本可在提交操作期间生成自定义警告消息,以便在配置不符合自定义配置规则时提醒您。提交流程不受警告影响。此示例会创建提交脚本,当设备配置中未包含特定语句时,该脚本将生成自定义警告消息。
要求
使用 Python 脚本时,Junos OS 版本 16.1R3 或更高版本。
概述和提交脚本
使用提交脚本,在层次结构级别不包含语句时 source-route
,请写上显示的 [edit chassis]
自定义警告消息。
脚本显示在 XSLT、SLAX 和 Python 中。
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(chassis/source-route)"> <xnm:warning> <xsl:call-template name="jcs:edit-path"> <xsl:with-param name="dot" select="chassis"/> </xsl:call-template> <message>IP source-route processing is not enabled.</message> </xnm:warning> </xsl:if> </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(chassis/source-route)) { <xnm:warning> { call jcs:edit-path($dot = chassis); <message> "IP source-route processing is not enabled."; } } }
Python 语法
from junos import Junos_Configuration import jcs def main(): root = Junos_Configuration if not(root.xpath("./chassis/source-route")): jcs.emit_warning("IP source-route processing is not enabled.") if __name__ == '__main__': main()
配置
程序
逐步过程
下载、启用和测试脚本。要测试提交脚本是否正确生成警告消息,请确保候选配置包含引起警告的情况。在此示例中 source-route
,请确保语句不包含在 [edit chassis]
层次结构级别。
要测试本主题中的示例:
将脚本复制到文本文件中,命名文件 源-route.xsl、 source-route.slax 或 source-route.py ,并将其复制到设备上的 /var/db/scripts/commit/ 目录。
注意:未签名的 Python 脚本必须归 Junos OS
super-user
登录类中的 root 或用户所有,并且只有文件所有者才能为该文件写入许可。在配置模式下
file
,在层次结构级别配置语句和脚本文件名[edit system scripts commit]
。[edit] user@host# set system scripts commit file source-route.xsl
如果脚本写在 Python 中,则允许执行未签名的 Python 脚本。
[edit] user@host# set system scripts language python
注意:将语句配置
language python3
为使用 Python 3 执行 Python 脚本,或将language python
语句配置为使用 Python 2.7 执行 Python 脚本。有关更多信息,请参阅 语言。如果语
source-route
句包含在[edit chassis]
层次结构级别,则发出delete chassis source-route
配置模式命令。[edit] user@host# delete chassis source-route
验证
验证脚本执行
目的
验证提交脚本生成的警告消息。
行动
commit check
执行或commit
命令并查看输出。当配置的层次结构级别中不包含[edit chassis]
语句时,source-route
提交脚本将生成警告消息。此警告不会影响提交过程。
[edit] user@host# commit check [edit chassis] warning: IP source-route processing is not enabled. configuration check succeeds
[edit] user@host# commit [edit chassis] warning: IP source-route processing is not enabled. commit complete
要显示 XML 格式的警告消息版本,请发出 commit check | display xml
命令。
[edit] user@host# commit check | display xml <rpc-reply xmlns:junos="http://xml.juniper.net/junos/10.0R1/junos"> <commit-results> <routing-engine junos:style="normal"> <name>re0</name> <xnm:warning> <edit-path> [edit chassis] </edit-path> <message> IP source-route processing is not enabled. </message> </xnm:warning> <commit-check-success/> </routing-engine> </commit-results> </rpc-reply>
要显示提交脚本处理的详细痕迹,请发出 commit check | display detail
命令。
[edit] user@host# commit check | display detail 2009-06-15 14:40:29 PDT: reading commit script configuration 2009-06-15 14:40:29 PDT: testing commit script configuration 2009-06-15 14:40:29 PDT: opening commit script '/var/db/scripts/commit/source-route-warning.xsl' 2009-06-15 14:40:29 PDT: reading commit script 'source-route-warning.xsl' 2009-06-15 14:40:29 PDT: running commit script 'source-route-warning.xsl' 2009-06-15 14:40:29 PDT: processing commit script 'source-route-warning.xsl' [edit chassis] warning: IP source-route processing is not enabled. 2009-06-15 14:40:29 PDT: no errors from source-route-warning.xsl 2009-06-15 14:40:29 PDT: saving commit script changes 2009-06-15 14:40:29 PDT: summary: changes 0, transients 0 (allowed), syslog 0 2009-06-15 14:40:29 PDT: no commit script changes 2009-06-15 14:40:29 PDT: exporting juniper.conf 2009-06-15 14:40:29 PDT: expanding groups 2009-06-15 14:40:29 PDT: finished expanding groups 2009-06-15 14:40:29 PDT: setup foreign files 2009-06-15 14:40:29 PDT: propagating foreign files 2009-06-15 14:40:30 PDT: complete foreign files 2009-06-15 14:40:30 PDT: daemons checking new configuration configuration check succeeds