Страницы

Поиск по вопросам

суббота, 14 декабря 2019 г.

Вывод всех возможных ip-адресов из диапазона

#powershell


Нужно написать скрипт на powershell. Есть любой IP адрес сети и маска (к примеру:
10.151.96.0/21), нужно вывести все возможные ip-адреса, удовлетворяющие адресу сети
и его маске. Как организовать этот цикл, чтобы работал с любым начальным условием?
    


Ответы

Ответ 1



Пока суть да дело, вот код на C# накатал: using System; using System.Net; string rangeIP = "10.151.96.0"; int rangeMask = 21; int wildcard = 32 - rangeMask; byte[] ipb = IPAddress.Parse(rangeIP).GetAddressBytes(); Array.Reverse(ipb); int ip = BitConverter.ToInt32(ipb, 0); for (int i = 1; i < (1 << wildcard) - 1; i++) { int ipi = ip | i; byte[] ipib = BitConverter.GetBytes(ipi); Array.Reverse(ipib); Console.WriteLine(new IPAddress(ipib)); } Сейчас попробую PowerShell вспомнить... Во, так получилось: $rangeIP = "10.151.96.0" $rangeMask = 21 $wildcard = (32 - $rangeMask) $ipb = [Net.IPAddress]::Parse($rangeIP).GetAddressBytes() [Array]::Reverse($ipb) $ip = [BitConverter]::ToInt32($ipb, 0) For ($i = 1; $i -lt ((1 -shl $wildcard) - 1); $i++) { $ipi = ($ip -bor $i) $ipib = [BitConverter]::GetBytes($ipi) [Array]::Reverse($ipib) Write-Host (New-Object IPAddress(@(,$ipib))) } За соответствие кода канонам не отвечаю, я PS не знаю. :)

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

Отправить комментарий