#python #get #meraki-api
Вопрос:
Network_Devices = dashboard.networks.getNetworkDevices('xxx')
Я работаю над запросами GET с помощью Cisco Meraki API и модуля на Python. Приведенная выше функция принимает только один «ввод» («xxx») выше. Кроме того, он не будет принимать список.
Есть ли какой-либо способ автоматизировать этот запрос в скрипте python? У меня есть более 50 входов, которые я хотел бы запустить через функцию.
Ответ №1:
Просто используйте цикл for . Вы сказали, что у вас более 50 входных данных, поэтому в этом случае у вас есть несколько вариантов:
- Определите список в
.py
файле, который содержит все идентификаторы networkd (не рекомендуется). - Создайте файл, содержащий все сетевые идентификаторы (рекомендуется).
Я проиллюстрирую вариант 2:
Я предполагаю, что вы используете Meraki SDK v1.12.0, загруженный путем запуска
pip install meraki
from pprint import pprint
import meraki
API_KEY = ""
dashboard = meraki.DashboardAPI(API_KEY)
with open(file=r"network_ids.txt", mode="rt", newline="") as f:
network_ids = [id.strip() for id in f.read().splitlines() if id.strip()]
for network_id in network_ids:
network_device = dashboard.networks.getNetworkDevices(network_id)
pprint(network_device)
network_ids.txt
Файл должен быть таким: (каждый id
в отдельной строке)
L_123456
L_789101
L_111213
Чтобы свести к минимуму этап сбора сетевых идентификаторов и добавления каждого идентификатора в отдельную строку в файле, вы можете получить идентификаторы из идентификатора организации:
from pprint import pprint
import meraki
API_KEY = ""
dashboard = meraki.DashboardAPI(API_KEY)
# Any organization id
org_id = "549236"
# Get all networks for an organization
networks = dashboard.organizations.getOrganizationNetworks(org_id, total_pages="all")
# pprint(networks)
# loop through networks
for network in networks:
# Get network devices for each network ID
network_devices = dashboard.networks.getNetworkDevices(network["id"])
# Check if the network has devices
if network_devices:
print(f"*** Devices in Network: {network['name']} ({network['id']}) ***")
for device in network_devices:
pprint(device)
else:
print(
f"!!! No devices found for network: {network['name']} ({network['id']}) !!!"
)