我对使用命令行(可能是Perl)生成所有可能的IP地址列表感兴趣。
过去,我使用long2ip
函数创建了一个从0到整数4294967295的列表。
有没有办法在Perl中这样做呢?
我基本上只是寻找生成文本文件的最快方法,该文件包含所有4,294,967,296个可能的IP地址列表。
答案 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。