通过命令行生成IP地址列表?

时间:2016-03-04 06:59:35

标签: perl command-line ssh

我对使用命令行(可能是Perl)生成所有可能的IP地址列表感兴趣。

过去,我使用long2ip函数创建了一个从0到整数4294967295的列表。

有没有办法在Perl中这样做呢?

我基本上只是寻找生成文本文件的最快方法,该文件包含所有4,294,967,296个可能的IP地址列表。

2 个答案:

答案 0 :(得分:2)

无需使用任何模块。这是一个微不足道的问题。

for my $i (0..255) {
    for my $j (0..255) {
        for my $k (0..255) {
            for my $l (0..255) {
                printf("%d.%d.%d.%d\n", $i,$j,$k,$l)
            }
        }
    }
}

答案 1 :(得分:1)

单行时间?

perl -MSocket=inet_ntoa -le 'print inet_ntoa(pack "N", $_) for 0..2**32-1'

来源:http://www.perlmonks.org/?node_id=786521通过快速谷歌搜索。

当然,Perl也不是必需的。以下内容动态生成快速sed脚本并连续调用它。

octets () { sed "h;$(for ((i=0; i<256; i++)); do printf "g;s/^/$i./p;"; done)"; }
octets <<<'' | octets | octets  | octets | sed 's/\.$//'

octets函数生成256个输入副本,其中包含一个(从零开始)的行号,每个行前面都有一个点。 (当然,您可以轻松地在最后添加。)在sed脚本语言中,h命令将输入​​复制到保留空间,g将其检索回来,覆盖任何内容我们之前有过。 C风格的for循环和<<<这里的字符串是Bash扩展,所以不是POSIX shell。