Last active
October 11, 2024 11:46
-
-
Save florian-obradovic/43c451e336fd4f2bf6f2c342fec64e4a to your computer and use it in GitHub Desktop.
Get Azure IPs from a JSON file, filter for specific fields and get the IP addressPrefixes for a specific service tag. Create a MikroTik RouterOS CLI command to add the IP to an address list!
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Use Case: | |
# Get IPs from a JSON file, filter for specific fields and get the IP addressPrefixes for a specific service tag. | |
# Create a MikroTik RouterOS CLI command to add the IP to an address list! | |
# Azure IP Ranges and Service Tags: https://www.microsoft.com/en-us/download/details.aspx?id=56519 | |
# Load the JSON file | |
$jsonData = Get-Content -Path "/Users/flo/Downloads/ServiceTags_Public_20241007.json" -Raw | ConvertFrom-Json | |
# Define the output file path | |
$outputFilePath = "/Users/flo/Downloads/Mikrotik.rsc" | |
# Filter the data to get addressPrefixes for a systemService and a region contains "germany" or "europe" | |
$addressPrefixes = $jsonData.values | Where-Object { | |
$_.properties.systemService -eq "AzureServiceBus" | |
# -and ($_.properties.region -contains "germany" -or $_.properties.region -match "europe") | |
} | Select-Object -ExpandProperty properties | Select-Object -ExpandProperty addressPrefixes | |
# Output the addressPrefixes | |
$addressPrefixes | |
# Initialize the CSV content | |
$csvContent = @() | |
# Loop through the addressPrefixes and generate the commands | |
foreach ($address in $addressPrefixes) { | |
if ($address -match ":") { | |
$command = "/ipv6/firewall/address-list/add address=""$address"" list=""Microsoft-Azure-Connectors"" comment=""Microsoft-Azure-Connectors TI-9964""" | |
} else { | |
$command = "/ip/firewall/address-list/add address=""$address"" list=""Microsoft-Azure-Connectors"" comment=""Microsoft-Azure-Connectors TI-9964""" | |
} | |
# Output the command to the console | |
Write-Host $command | |
# Add the command to the CSV content | |
$csvContent += $command | |
} | |
# Write the CSV content to the file | |
$csvContent | Out-File -FilePath $outputFilePath -Encoding utf8 | |
# Add the command to the CSV content | |
$csvContent += $command |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Updated the script to output only the commands...