在 Python 提交脚本中生成持久或暂时的配置更改
Junos OS 提交脚本强制执行自定义配置规则,并在配置不符合自定义配置规则时自动更改配置。要使用 Python 提交脚本生成持久或 瞬时更改 ,请执行以下操作:
生成的脚本将搜索未启用 MPLS 协议家族的 SONET/SDH 接口,在层次结构级别添加family mpls[edit interfaces so-fpc/pic/port unit logical-unit-number]语句作为持久更改,并发出警告消息,指出配置已更改。
from junos import Junos_Configuration
import jcs
def main():
# Get configuration root object
root = Junos_Configuration
for element in root.xpath("./interfaces/ \
interface[starts-with(name,'so-')]"):
if element.find('unit/family/mpls') is None:
if_name = element.find('name').text
unit_name = element.find('unit/name').text
change_xml = """
<interfaces>
<interface>
<name>{0}</name>
<unit>
<name>{1}</name>
<family>
<mpls>
</mpls>
</family>
</unit>
</interface>
</interfaces>
""".format(if_name, unit_name).strip()
jcs.emit_change(change_xml, "change", "xml")
jcs.emit_warning("Adding 'family mpls' to SONET interface: " + if_name)
if __name__ == '__main__':
main()
如果所有已启用的提交脚本都运行且没有错误,则任何持久更改都将加载到候选配置中,任何暂时性更改将加载到签出配置中,而不是加载到 候选配置中。然后,通过验证配置并将更改传播到设备上受影响的进程,提交过程将继续。
要显示同时应用了持久和瞬态更改的配置,请发出 show | display commit-scripts 配置模式命令。
[edit] user@host# show | display commit-scripts
要显示仅应用持久更改的配置,请发出 show | display commit-scripts no-transients 配置模式命令。
[edit] user@host# show | display commit-scripts no-transients
持久性和瞬态更改加载到配置中的方式与配置模式命令加载传入配置的方式load replace相同。生成持久或瞬态更改时,将属性添加到replace="replace"配置元素会产生与操作中的load replace标记相同的replace:行为。持久和瞬态更改都随行为一起load replace加载到配置中。但是,持久更改将加载到候选配置中,瞬态更改将加载到签出配置中。