Bashで何千ものCIDR /ネットマスク範囲のIPホストアドレスを素早く効率的にカウントする方法はありますか?
私はIPSetを使って何万ものIPv4 CIDR /ネットマスク範囲を管理していましたが、それらはその後IPTablesルールにリンクされます。この設定はうまく機能していますが、IPSetがクライアントのレポート目的で機能するIPホストアドレスの概要を正確に把握したいと思います。 IPSetエントリのフォーマットは一貫して次のようになっています。 123.456.0.0/16 timeout 86400 だから私は持っている行にgrepすることができます timeout エントリに含まれるCIDR /ネットマスク範囲に基づいて動作する値を取得します。 たとえば、IPSetの出力を(次のようにして)保存したとします。 ipset -L -n > ipset-20181228.txt )というテキストファイルに ipset-20181228.txt そして、の組み合わせを実行します grep そして wc -l このような: grep "timeout" ipset-20181228.txt | wc -l 39,000以上のCIDR /ネットマスクの範囲に相当する39,000以上の項目があります。しかし、それは(もちろん)CIDR /ネットマスクの範囲を数えるだけで、その範囲のIPホストアドレスの全数を数えることはできません。 使用しようとしました prips grepを使用して、CIDR /ネットマスクの範囲をBIDで実際のIPアドレスに拡張します(CIDR /ネットマスクの値を実際のIPアドレスに拡張します)。 grep -oE '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([0-9]{1,2})' ipset-20181228.txt | awk 'NF { system( "prips " …