まず、私の同様の問題を検索しましたが、上記の質問に答えることができませんでした。さらにアドバイスをいただければ幸いです。
ネットワーク機器のリストからデータを抽出し、その値を 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"
}
]
]
}
誰かが私を正しい道に導いてくれることを本当に願っています...私は立ち往生しています...私を助けてください。ありがとうございました。