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