JAPANESEENGLISH

iptab - K-blo

[2010/03/03(Wed) 03:47:27]

CentOSでiptablesコマンドを実行しようとしてキー補完したら,iptabコマンドを見つけました.

ネットマスクなどを表示するだけで,manやオプションもなく,UNIXらしくない動きです.このコマンドの中身くらいはアタマに入れておきたいですが,確認用に良いでしょう.

実体はPerlスクリプトでした.おもしろい.

iptab
#!/usr/bin/perl

eval 'exec /usr/bin/perl  -S $0 ${1+"$@"}'
    if 0; # not running under some shell

use Net::IP;
use strict;

print "+----------------------------------------------+
| addrs   bits   pref   class  mask            |
+----------------------------------------------+
";

my ($ip,$size,$class,$bits,$len);

my $ip = new Net::IP('0');

for my $len (reverse (0..32))
{

        $ip->set("0.0.0.0/$len");

        $size = $ip->size();

        if ($size >=1048576) # 1024*1024
        {
                $size /= 1048576;
                $size .= 'M';
        }
        elsif ($size >= 1024)
        {
                $size /= 1024;
                $size .= 'K';
        };

        $len = $ip->prefixlen();
        $bits = 32 - $len;

        if ($bits >= 24)
        {
                $class = 2**($bits-24);
                $class.= 'A';
        }
        elsif ($bits >= 16)
        {
                $class = 2**($bits-16);
                $class.= 'B';
        }
        elsif ($bits >= 8)
        {
                $class = 2**($bits-8);
                $class.= 'C';
        }

        printf ("| %5s %6s %6s %7s  %-15s |\n",
                $size,$bits,'/'.$len,$class,$ip->mask());


};

print "+----------------------------------------------+\n";

kossy2010-03-03T04:07:40+0900

ipcountやipcalcなど似たようなコマンドもあるようです.

Old Diary & Update history & Memo

Top page