Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

使用 Junos PyEZ 传输文件

总结 使用 Junos PyEZ 保护本地主机和 Junos 设备之间的复制 (SCP) 文件。

Junos PyEZ 提供的实用程序使您能够在 Junos 设备上执行文件管理任务。可以使用 Junos PyEZ jnpr.junos.utils.scp.SCP 类在本地主机和 Junos 设备之间保护复制 (SCP) 文件。

SCP open()close()方法建立并终止与设备的连接。因此,如果客户端应用程序仅执行文件复制操作,则可以省略对 and Device open() close() 方法的调用。类的SCP实例可用作上下文管理器,这些上下文管理器会自动调用open()close()方法。例如:

SCP 使您能够使用该 progress 参数跟踪传输进度。默认情况下, SCP 不打印进度消息。设置为 progress=True 以 10% 或更大的传输完成间隔打印默认进度消息。

或者,您可以定义自定义函数来打印进度消息,然后将参数设置为 progress 等于函数的名称。函数定义应包括与设备实例和进度消息对应的两个参数。例如:

以下示例程序将 scp-test1.txtscp-test2.txt 文件从本地主机传输到目标设备上的 /var/tmp 目录,然后将消息日志文件从目标设备传输到本地主机上的 日志 目录。重命名消息日志以将设备主机名附加到文件名。该示例使用已在本地主机和设备上配置的 SSH 密钥进行身份验证。

出于比较目的,程序使用默认进度消息以及在名为 log的函数中定义的自定义消息来跟踪传输进度。

传输进度将发送到标准输出。默认输出 (progress=True) 包括设备名称、正在传输的文件以及传输进度(以字节和百分比表示)。

在这种情况下,自定义函数会生成类似的输出。

执行程序后,在目标设备上发出 file list 命令以验证 scp-test1.txtscp-test2.txt 文件是否已复制到正确的目录。

在本地主机上, 消息 日志文件(重命名以包含设备主机名)应存在于 logs 目录中。

默认情况下,Junos PyEZ 在 ~/.ssh/config 查询默认的 SSH 配置文件(如果存在)。但是,您可以在创建设备实例时通过在参数列表中包含 ssh_config 参数 Device 来指定不同的 SSH 配置文件。例如:

此外,当您在Device参数列表中包含ssh_private_key_file参数以定义用于身份验证的特定 SSH 私钥文件时,实例在SCP传输文件时将使用相同的密钥文件进行身份验证。

SCP 类还提供对 ProxyCommand 的支持,该命令使您能够通过支持 netcat 的中间主机将文件从本地主机传输到目标设备。当您只能通过中间主机登录到目标设备时,此功能非常有用。要配置代理命令,请将相应的信息添加到 SSH 配置文件中。例如: