Я пытаюсь внедрить диапазоны IP-адресов в SolarWinds с меткой в каждой группе диапазонов IP-адресов, связанных со службой, которую я хочу пометить. Хотя я чувствую, что должен быть гораздо лучший способ сделать это, потому что в конечном итоге он должен быть в формате XML.
<AddressGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/IPAddressGroupsSchema.xsd">
<AddressGroup enabled="true" description="Example">
<Range from="13.107.6.152" to="13.107.6.153" />
</AddressGroup>
<AddressGroup enabled="true" description="Example 2">
<Range from="150.224.0.0" to="150.224.131.255" />
<Range from="150.224.140.0" to="150.224.255.255" />
</AddressGroup>
По сути, у меня есть файл JSON, который я вытащил всененужная информация. Я не могу проглотить адреса CIDR, поэтому у меня есть скрипт Go, который преобразует нотацию CIDR в диапазон IP-адресов.
{
"ips": [
"13.107.6.152/31",
"13.107.18.10/31",
"13.107.128.0/22",
"23.103.160.0/20",
"40.96.0.0/13",
"40.104.0.0/15",
"52.96.0.0/14",
"131.253.33.215/32",
"132.245.0.0/16",
"150.171.32.0/22",
"191.234.140.0/22",
"204.79.197.215/32",
"2603:1006::/40",
"2603:1016::/40",
"2603:1026::/40",
"2603:1026:200::/39",
"2603:1026:400::/39",
"2603:1026:600::/44",
"2603:1026:620::/44",
"2603:1026:800::/44",
"2603:1026:820::/45",
"2603:1036::/39",
"2603:1036:200::/40",
"2603:1036:400::/40",
"2603:1036:600::/40",
"2603:1036:800::/38",
"2603:1036:c00::/40",
"2603:1046::/37",
"2603:1046:900::/40",
"2603:1056::/40",
"2603:1056:400::/40",
"2603:1056:600::/40",
"2603:1096::/38",
"2603:1096:400::/40",
"2603:1096:600::/40",
"2603:1096:a00::/39",
"2603:1096:c00::/40",
"2603:10a6:200::/40",
"2603:10a6:400::/40",
"2603:10a6:600::/40",
"2603:10a6:800::/40",
"2603:10d6:200::/40",
"2620:1ec:4::152/128",
"2620:1ec:4::153/128",
"2620:1ec:c::10/128",
"2620:1ec:c::11/128",
"2620:1ec:d::10/128",
"2620:1ec:d::11/128",
"2620:1ec:8f0::/46",
"2620:1ec:900::/46",
"2620:1ec:a92::152/128",
"2620:1ec:a92::153/128",
"2a01:111:f400::/48"
],
"serviceArea": "Exchange",
"serviceAreaDisplayName": "Exchange Online"
}
Есть еще несколько из них, но я стремлюсь сделать это через циклвсе ips, передайте каждый из них через cidrls (сценарий преобразования cidr) и замените их на выходной диапазон ip.
jq -r '.ips[]' msftServices.json | xargs -n1 cidrls
Вывод выглядит следующим образом, 13.107.128.0 - 13.107.131.255