Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 Junos PyEZ 从 Junos 设备检索事实

了解 Junos PyEZ 设备事实

Junos PyEZ 是面向 Python 的一种微框架,使您能够管理和自动化 Junos 设备。Junos PyEZ 将每个设备都作为课程实 jnpr.junos.device.Device 例进行型号。连接到 Junos 设备后,Junos PyEZ 应用程序可以检索有关设备的事实。设备事实作为对象的Device属性访问facts。有关退回设备事实中包含的密钥的详细信息,请参阅 jnpr.junos.事实

以下示例将通过 SSH 与设备建立 NETCONF 会话,并打印设备事实。设备使用 SSH 密钥对用户进行身份验证。

在 Junos PyEZ 版本 2.0.0 和早期版本中,当应用程序调用Deviceopen()连接到设备的方法时,Junos PyEZ 会自动收集 NETCONF-over-SSH 连接的设备事实,并在您明确包含gather_facts=True在论证列表中时收集 Telnet 和串行控制台连接的Device设备事实。

从 Junos PyEZ 版本 2.1.0 开始,应需收集所有连接类型的设备事实。应用程序首次访问其值或相关事实的值时,会收集并缓存每个事实。打印或使用设备事实时,将从缓存中取出以前访问的事实,并且从设备中检索尚未访问的事实。如果在给定平台上不支持事实,或者如果应用程序遇到收集特定事实值的问题,则该事实的价值是 None

Junos PyEZ 在首次访问事实或相关事实时缓存设备事实,但不会在后续访问时更新缓存值。要刷新设备事实,请调用此 facts_refresh() 方法。该 facts_refresh() 方法可以清空所有事实的缓存,这样,当应用程序下次访问事实时,它会从设备中检索该事实,并将当前值存储在缓存中。

要仅刷新单个事实或一组事实,请在方法中facts_refresh()包含keys该论点,并指定要从缓存中清除的密钥。例如:

注意:

从 Junos PyEZ 2.0.0 版开始,收集事实时发生的例外情况会引发警告,而不是出错,从而使脚本能够继续运行。

默认情况下,Junos PyEZ 将设备事实返回为类似字典的对象。从 Junos PyEZ 版本 2.2.1 开始,您可以在 JavaScript 对象符号 (JSON) 中查看设备事实。要查看 JSON 对事实的表示,请导入 json 模块并调用该 json.dumps() 功能。

示例:从 Junos 设备检索事实

借助 Junos PyEZ,您可以在 Python 交互模式下快速执行命令,或者创建程序来执行任务。以下示例使用 Junos 设备建立 SSH 上的 NETCONF 会话,并使用简单的 Python 程序和 Python 交互模式检索和打印设备的事实。这些示例使用现有 SSH 密钥进行身份验证。

要创建 Junos PyEZ 应用程序,使用 Junos 设备在 SSH 上建立 NETCONF 会话并打印设备事实:

  1. 在您最喜欢的编辑器中,创建一个带有描述性名称的新文件,该名称使用 .py 文件扩展。
  2. 导入 Device 班级以及执行任务所需的任何其他模块或对象。
  3. 创建设备实例并提供主机名、认证所需的任何参数以及任何可选参数。
  4. 通过调用 open() 此方法连接到设备。
  5. 打印设备事实。
    提示:

    要刷新设备的事实,请调用 facts_refresh() 该方法,例如 dev.facts_refresh()

  6. 关闭与设备的连接。
  7. 保存并执行此程序。

整个计划在这里展示:

您还可以在 Python 交互模式下快速执行相同的操作。

以下视频展示了一个简短的 Python 会话,演示了如何使用 Junos PyEZ 从 Junos 设备连接并检索事实。

发布历史记录表
释放
描述
2.1.0
从 Junos PyEZ 版本 2.1.0 开始,应需收集所有连接类型的设备事实。
2.0.0
从 Junos PyEZ 2.0.0 版开始,收集事实时发生的例外情况会引发警告,而不是出错,从而使脚本能够继续运行。