一般的な 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..
1942 次
2 に答える
6
Ruby を「一般的な Linux ツール」と見なしているかどうかはわかりませんが、Ruby には、そのために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
于 2009-01-12T14:49:26.453 に答える
3
これが必要だったので、短いスクリプトを作成することにしました。sed と bash が必要です。私はそれらを両方とも一般的な 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
于 2009-05-14T17:19:16.560 に答える