Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 PyEZ 访问运行 Junos OS 上的Junos Shell

命令Junos OS 命令行界面 (CLI) 有许多操作模式命令,其返回的信息类似于许多 shell 命令返回的信息。因此,通常不需要访问运行 Junos OS 的设备上 UNIX 级别 shell。但是,在某些情况下,用户或应用程序可能需要访问 shell,然后从 shell 执行 shell CLI命令。

该Junos PyEZ jnpr.junos.utils.start_shell StartShell 模块定义了类,使Junos PyEZ 应用程序能够启动与运行 Junos OS 设备的 SSH 连接并访问 shell。这些方法 StartShell 使应用程序随后能通过连接执行命令并检索响应。和 StartShell open() close() 方法将建立并终止与设备的 SSH 连接。因此,如果客户端应用程序仅需要访问 shell,它可以省略对 和 Device open() 方法的 close() 调用。

此方法StartShellrun()将执行 shell 命令并等待响应。默认情况下,方法将等待一个默认 shell 提示(百 分之 # 、> 或 \$)  后返回命令输出。如果将 参数this="string"设置为特定字符串,则方法将等待预期的字符串或模式,然后再返回命令输出。返回值是元组,True其中第一个项是如果 exit 代码为 0False,否则,第二个项是 命令的输出。

以下示例连接到主机,然后从 shell 执行两个操作模式命令。脚本将首先执行 命令request support information,将输出保存至文件。随后,脚本将执行 命令show versionversion,将输出存储在变量中,然后打印该变量的内容。

此示例中,返回的元组包括对应于 命令的出口代码和 命令的输出 show version 的布尔值。为了简洁起见,此示例的输出将截短。

类的实例 StartShell 也用作上下文管理器。在这种情况下,无需显式调用 StartShell open()close() 方法。例如:

从 Junos PyEZ 版本 2.0.1 StartShell timeout 开始,您可以包括一个参数,用于指定实用程序在超时之前必须等待 Junos OS shell 中预期字符串或模式的时间长度,以秒为秒。如果不指定超时,则默认为 30 秒。

在某些情况下,您可能需要执行非颠覆 shell monitor traffic 命令,如 命令,命令显示在本地服务器中发起或终止路由引擎。在Junos OS CLI monitor traffic ,命令将实时显示信息,直到用户发送 Ctrl+c 键盘序列来停止数据包捕获。

从 PyEZ Junos 2.1.0 版开始,您可以使用 方法将 参数设置为 等于 ,以执行非re shell StartShell run() this 命令。 None包括该参数 this=None 时,方法将等待指定的超时值才能检索和返回 shell 的所有命令输出。在这种情况下,返回 True 元组的第一项是执行 shell 命令返回内容的结果,第二项是命令输出。 this 如果您省略该参数或将其设置为等于特定字符串或模式,则方法在命令输出中遇到默认提示或指定字符串模式时,可能返回非恢复命令的部分输出。

以下示例代码将执行 命令 monitor traffic interface fxp0 ,等待 15 秒,然后检索并返回命令输出。

有关类及其方法 StartShell 的信息 ,请参阅 http://junos-pyez.readthedocs.io/en/latest/jnpr.junos.utils.html#module-jnpr.junos.utils.start_shell