Как проще всего использовать обычные инструменты Linux, чтобы проверить, принадлежит ли группа IP-адресов данной сети? - PullRequest
3 голосов
/ 12 января 2009

Какой самый простой способ с помощью обычных инструментов linux проверить, принадлежит ли группа IP-адресов к данной сети? Мне просто нужно количество адресов, принадлежащих данной подсети. Допустим, сеть - 192.16.55.40/27, а адреса - 192.16.55.45, 192.16.55.115, 88.87.45.8, 192.16.55.37, 192.16.55.60 и 192.16.55.210 ..

Ответы [ 2 ]

6 голосов
/ 12 января 2009

Я не уверен, рассматриваете ли вы Ruby как "обычный инструмент для Linux", но у него есть хороший модуль с именем IPAddr, для которого есть метод с именем include?.

require 'ipaddr'

net1 = IPAddr.new("192.168.2.0/24")
net2 = IPAddr.new("192.168.2.100")
net3 = IPAddr.new("192.168.3.0")
p net1.include?(net2)     #=> true
p net1.include?(net3)     #=> false
3 голосов
/ 14 мая 2009

Мне нужно было это, и я решил создать короткий сценарий. Мне требуется Сед и Баш. Я бы назвал их обоими распространенными инструментами Linux.

Редактировать: Скрипт слишком длинный для вставки, очевидно. Вы можете найти его здесь: http://folk.ntnu.no/olechrt/netaddr

$ cat ips

192.16.55.45
192.16.55.115
88.87.45.8
192.16.55.210.11
192.16.55.37
192.16.55.60
192.16.55.210
256.87.45.8

$ cat ips | netaddr 192.16.55.40/27

192.16.55.45
Warning: Input IP "192.16.55.210.11" is invalid.
192.16.55.37
192.16.55.60
Warning: Input IP "256.87.45.8" is invalid.

И, наконец, для подсчета вы просили: $ cat ips | netaddr 192.16.55.40/27 | wc -l

Warning: Input IP "192.16.55.210.11" is invalid.
Warning: Input IP "256.87.45.8" is invalid.
3
...