Сохранять сеть при создании диапазона IP-адресов (R IP Tools)

Заранее извиняюсь, если на это есть очевидный ответ; У меня есть вектор сетей IPv4 в нотации CIDR (например, 192.168.100.14/24), и я хочу сгенерировать IP-адреса, которые есть в каждой сети, но также сохранить информацию о сети в R Studio.

Используя пакет IP Tools, я могу генерировать IP-адреса, которые есть в каждой сети, но я не знаю, как перенести сеть с нотацией CIDR в набор данных.

В настоящее время я просто делаю это:

iprange <- vector()
for (i in 1:nrow(CIDR_data))
{ 
  iprange <- c(iprange,range_generate(CIDR_data$Network[i]))
}

Я пытался сделать несколько вещей, в основном используя функцию ip_in_range в том же пакете и функцию соответствия в базовом пакете, чтобы попытаться "найти" сеть для каждого IP после генерации IP, но мне не повезло.

Заранее благодарю за любую помощь!

1 ответ

На случай, если кто-то еще сочтет это полезным, я сделал это в Python 3.6 с помощью модуля ipaddress (входит в базовый пакет):

inactive_ips = []
inactive_networks = []

for i in networks:
    inactive_ips.append(list(ipaddress.ip_network(i).hosts()))
    ## this won't include the host & broadcast IPs!
    inactive_networks.append(str(i))

both = zip(inactive_ips, inactive_networks)
both_values = tuple(both)

Используя мой пакет ipaddress, это довольно просто. Если вы хотите, чтобы список адресов соответствовал вашему коду Python, вы можете использовать hosts() вместо того seq().

library(tidyverse)
library(ipaddress)

tibble(network = ip_network(c("192.168.100.0/30", "192.168.0.0/31"))) %>%
  rowwise() %>%
  mutate(addresses = list(seq(network))) %>%
  unnest_longer(addresses, values_to = "address")
#> # A tibble: 6 x 2
#>            network       address
#>         <ip_netwk>     <ip_addr>
#> 1 192.168.100.0/30 192.168.100.0
#> 2 192.168.100.0/30 192.168.100.1
#> 3 192.168.100.0/30 192.168.100.2
#> 4 192.168.100.0/30 192.168.100.3
#> 5   192.168.0.0/31   192.168.0.0
#> 6   192.168.0.0/31   192.168.0.1

Создано 06.08.2020 с помощью пакета REPEX (v0.3.0)

Другие вопросы по тегам