保存并加载 Junos PyEZ 表 XML 来回文件
Junos PyEZ 表和视图允许您从操作命令输出或 Junos 设备上选定的配置数据库中提取有针对性的数据。您可以将表数据导出为 XML,以便检索一个或多个设备的信息,并在以后处理。Junos PyEZ 提供了 savexml()
此方法。
此 savexml()
方法允许您为导出的数据指定目标文件路径,并可选择将设备主机名和活动时间戳包含在文件名中。您可以使用标准 strftime
格式控制时间戳的格式。
例如,假设您想在模块中 jnpr.junos.op.xcvr
使用 XcvrTable 定义环路浏览设备列表并收集收发器数据。以下代码定义设备主机名列表,提示用户获取用户名和密码,然后环路与每个设备建立连接:
import sys from getpass import getpass from jnpr.junos import Device from jnpr.junos.op.xcvr import XcvrTable devlist = ['router1.example.com', 'router2.example.com'] user = raw_input('username: ') passwd = getpass('password: ') for host in devlist: sys.stdout.write('connecting to %s ... ' % host) sys.stdout.flush() dev = Device(host,user=user,password=passwd) dev.open() print('ok.') # log data dev.close()
这一点。程序尚未检索到任何收发器数据。运行计划的结果如下输出:
user1@server:~$ python3 xcvr_demo.py username: user1 password: connecting to router1.example.com ... ok. connecting to router2.example.com ... ok.
要收集和记录收发器数据,请将表与每个目标设备关联,检索数据,然后使用该方法将其保存到文件中savexml()
。您可以在论证列表中savexml()
包括hostname=True
并timestamp=True
附上主机名和时间戳以附加到输出文件名。如果以这种方式检索多个设备的数据,则必须使用主机名、时间戳或两者同时区分每个设备的输出文件名,以防止一台设备的数据在同一文件中覆盖上一台设备的数据。
# log data xcvrs = XcvrTable(dev).get() xcvrs.savexml(path='/var/tmp/xcvrs/xcvr.xml', hostname=True, timestamp=True)
该 path
论点假定目标目录存在于您的本地文件系统上。
在程序中的设备环路中添加附加代码,然后执行程序后,您可以检查目标目录的内容。在此示例中,主机名和时间戳值嵌入到文件名中。
user1@server:~$ ls /var/tmp/xcvrs xcvr_router1.example.com_20131226093921.xml xcvr_router2.example.com_20131226093939.xml
您可以在以后导入 XML 数据以进行后处理。要导入数据,请将表与 XML 文件关联,而不是目标设备。例如:
from jnpr.junos.op.xcvr import XcvrTable xmlpath = '/var/tmp/xcvrs/xcvr_router1.example.com_20131226093921.xml' xcvrs = XcvrTable(path=xmlpath) xcvrs.get()