Экспортируйте правила Meraki FW для сетей в организации в виде необработанного фрейма данных pandas или csv

#pandas #csv #network-programming #devops #meraki-api

#панды #csv #сетевое программирование #devops #мераки-апи

Вопрос:

Я пытаюсь экспортировать правила Meraki FW для сетей в организации в виде строк csv

 import meraki import time import sys import config import requests import csv   # Set the CSV output file and write a header row output_file = open('mx_fw_rules.csv', mode='w') csv_writer = csv.writer(output_file, escapechar=' ', quoting=csv.QUOTE_NONE) header_row_text = "Comment, Policy, Protocol, Source Port, Source CIDR, Destination Port, Destination CIDR, Syslog Enabled ?" csv_writer.writerow([header_row_text])  dashboard = meraki.DashboardAPI(api_key=config.meraki_api_key) myNetworks = dashboard.organizations.getOrganizationNetworks(config.meraki_org_id, total_pages='all')  for theNetwork in myNetworks:  theNetworkid = theNetwork["id"]  theNetworkname = theNetwork["name"]  print(theNetworkid, " ",theNetworkname)  for theNetwork in myNetworks:  theNetworkid = theNetwork["id"]  #comment the 3 lines below if you do not want to filter out networks whose name matches that condition  if theNetwork["name"].startswith('z') or theNetwork["name"].endswith('switch-wifi') or theNetwork["name"].endswith('camera') or theNetwork["name"].endswith('systems manager'):  print("Skipping network named: ",theNetwork["name"], " because it starts with z or ends with switch-wifi, camera or systems manager" )  continue  else:       #get the rules  #theMXL3FirewallRules=meraki.getmxl3fwrules(config.meraki_api_key, theNetworkid, True)  theMXL3FirewallRules=dashboard.appliance.getNetworkApplianceFirewallL3FirewallRules(theNetworkid)  print("^^^ Full output:", (str(theMXL3FirewallRules)))  csv_row = "{0},{1},{2},{3},{4},{5},{6},{7}".format(theMXL3FirewallRules['comment'], theMXL3FirewallRules['policy'], theMXL3FirewallRules['protocol'], theMXL3FirewallRules['srcPort'], theMXL3FirewallRules['srcCidr'], theMXL3FirewallRules['destPort'], theMXL3FirewallRules['destCidr'], theMXL3FirewallRules['syslogEnabled'])  print("### Writing this row to CSV:", csv_row)  csv_writer.writerow([csv_row]) output_file.close()  

Я получаю ошибку ключа: «комментарий». Я написал попытку:кроме как пропустить ошибку и получил пустой выходной файл. Я все еще новичок.

Выходные данные theMXL3FirewallRules представлены в формате ниже:

 {  "rules": [  {  "comment": "Allow TCP traffic to subnet with HTTP servers.",  "policy": "allow",  "protocol": "tcp",  "destPort": "443",  "destCidr": "192.168.1.0/24",  "srcPort": "Any",  "srcCidr": "Any",  "syslogEnabled": false  }  ] }  

Заранее спасибо

Комментарии:

1. Не могли бы вы добавить вывод print(theMXL3FirewallRules) к вопросу? Спасибо вам 🙂