#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)
к вопросу? Спасибо вам 🙂