0

首先,我搜索了我的类似问题,但没有人能够回答我上面的问题。希望大家多多指教。

我正在运行一个脚本以从网络设备列表中提取数据并将值保存到 json 文件中,例如下面

json-1 = {
  "channel": "scanner",
  "action": "create_device",
  "table": "U2",
  "device":[]
}
data = "device_name","ip_address","lldp_neighbors"

然后用一行代码获取devicename、ipaddress和lldp的数据,返回值,提取出来保存到上面的数据列表中。例如

my[data[0]] = connection.find_prompt().rstrip('>') #to get hostname
my[data[1]] = device['ip'] #to get ip address
my[data[2]] = connection.send_command('show lldp neighbors | display xml') 
#to get lldp data in xml format

json1["device"].append(my) #append my data to device

对于 my[data[2]],lldp 邻居将返回 xml 格式的数据并将该 xml 数据转换为 json 格式文件,如下所示

LLDP 邻居详情:-

"lldp_neighbors": [
{
"local-port": "xe-3/0/4.0",
"parent-interface": "ae31.0",
"chassis-id": "b0:c6:9a:63:80:40",
"port-info": "xe-0/0/0/0.0",
"system-name": "host.jnpr.net"
}

我的问题是如何将上面的 lldp 邻居详细信息(json 数据)添加到 json-1 的 temp[data[2]] 上,以便生成的最终 json 文件 json.dump(json-1, fp) 如下所示,嵌套的 json 文件

{
  "channel": "scanner",
  "action": "create_device",
  "table": "U2",
  "device": [
    {
      "device_name": "rtr1.wer",
      "ip_address": "1.1.1.1",
      "lldp_neighbors": [
      {
       "local-port": "xe-3/0/4.0",
       "parent-interface": "ae31.0",
       "chassis-id": "b0:c6:9a:63:80:40",
       "port-info": "xe-0/0/0/0.0",
       "system-name": "host.jnpr.net"
      }
    ]
  ]
}

我真的希望有人能指出我正确的道路......我被卡住了......请帮助我。谢谢你。

4

1 回答 1

0

data应该是字典类型,现在是元组类型


data = "device_name","ip_address","lldp_neighbors"
# change to
data = {"device_name": "","ip_address": "","lldp_neighbors": []}
my[data["device_name"]] = connection.find_prompt().rstrip('>') #to get hostname
my[data["ip_address"]] = device['ip'] #to get ip address
my[data["lldp_neighbors"]] = connection.send_command('show lldp neighbors | display xml') 
于 2019-02-21T09:48:06.360 回答