排除配置 Junos 设备时的 Junos PyEZ 错误
以下各节概述了使用 Junos PyEZ 配置 Junos 设备时可能遇到的错误。这些部分还介绍了每个错误的潜在原因和解决方案。
排查超时错误
问题
描述
Junos PyEZ 代码生成 Rpc超时错误消息或超时过期错误消息,但无法更新设备配置。
RpcTimeoutError(host: dc1a.example.com, cmd: commit-configuration, timeout: 30)
原因
NETCONF RPC 超时的默认时间为 30 秒。大型配置更改可能会超过此值,从而导致操作在上载和提交配置之前超时。
解决 方案
若要适应可能需要提交时间长于默认超时间隔的配置更改,请将超时间隔设置为适当的值,然后重新运行代码。若要配置间隔,请将属性设置为Device
timeout
适当的值,或者在设备上加载和提交配置数据时在 or set()
方法中包含timeout=seconds
commit()
参数。例如:
dev = Device(host="host") dev.open() dev.timeout = 300 with Config(dev, mode='exclusive') as cu: cu.load(path='junos-config.conf', merge=True) cu.commit(timeout=360) dev.close()
排查配置锁定错误
问题
描述
Junos PyEZ 代码会生成一条 LockError 消息,指示无法锁定配置。
LockError(severity: error, bad_element: None, message: configuration database modified)
原因
发生配置锁定错误的原因如下:
另一个用户对配置具有独占锁定。
-
共享配置数据库具有未提交的更改。
执行 Junos PyEZ 代码的用户没有配置设备的权限。
解决 方案
如果其他用户对配置具有独占锁或修改了配置,请等待锁定释放或更改提交,然后再次执行代码。如果问题的原因是用户没有配置设备的权限,请使用具有必要权限的用户执行程序,或者如果适用,配置 Junos 设备以授予当前用户进行更改所需的权限。