我需要在Perl中生成一个IP地址列表(IPv4)。我有开始和结束地址,例如1.1.1.1和1.10.20.30。我怎样才能打印所有的地址?如何在Perl中生成一系列IP地址?
回答
使用Net::IP的循环功能:
的
+
运营商是为了让循环,虽然IP的全系列解决重载:
这就是你如何编码它。这是我知道的最快的方式。
my $start = 0x010101; # 1.1.1
my $end = 0x0a141e; # 10.20.30
for my $ip ($start..$end) {
my @ip = ($ip >> 16 & 0xff
, $ip >> 8 & 0xff
, $ip & 0xff
);
print join('.', 1, @ip), "\n";
}
TMTOWTDI:
sub inc_ip { $_[0] = pack "N", 1 + unpack "N", $_[0] }
my $start = 1.1.1.1;
my $end = 1.10.20.30;
for ($ip = $start; $ip le $end; inc_ip($ip)) {
printf "%vd\n", $ip;
}
对于那些懒得谷歌它 - “Theres不只一种方式做到这一点” – 2010-02-17 11:06:53
这种方法可以防止你的数字超过255吗?对不起,我很难读它,我不熟悉解压缩,并且由于某种原因,我的网络上的所有搜索引擎似乎都已关闭(不能以bing,yahoo或google的形式访问) ) – onaclov2000 2010-02-17 13:19:57
@ onaclov2000 http://p3rl.org/pack – 2010-02-17 14:35:20
使用Net::IP。从CPAN文档:
my $ip = new Net::IP ('195.45.6.7 - 195.45.6.19') || die;
# Loop
do {
print $ip->ip(), "\n";
} while (++$ip);
该方法更灵活,因为Net :: IP接受CIDR表示法,例如, 193.0.1/24并且还支持IPv6。
编辑:如果您正在使用网络块,您可能会调查Net::Netmask。
I宁愿这些网址:http://search.cpan.org/perldoc/Net::IP和http://search.cpan.org/perldoc/Net::Netmask – 2010-02-17 14:33:23
@Sinan我觉得我的答案添加了足够的额外信息值得发布。反问题:为什么 - 我不应该向OP提供有用的信息?它如何伤害任何人? – rjh 2010-02-18 17:04:18
# We can use below code to generate IP range
use warnings;
use strict;
my $startIp = $ARGV[0];
my $endIp = $ARGV[1];
sub range {
my (@ip,@newIp,$i,$newIp,$j,$k,$l,$fh);
my ($j1,$k1,$l1);
open($fh,">","ip.txt") or die "could not open the file $!";
@ip = split(/\./,$startIp);
for($i=$ip[0];$i<=255;$i++) {
for($j=$ip[1];$j<=255;$j++) {
$ip[1]=0 if($j == 255);
for($k=$ip[2];$k<=255;$k++) {
$ip[2]=0 if($k == 255);
for($l=$ip[3];$l<=255;$l++) {
$ip[3]=0 if($l == 255);
@newIp = $newIp = join('.',$i,$j,$k,$l);
print $fh "$newIp \n";
exit if ($newIp eq $endIp);
}
}
}
}
}
range ($startIp, $endIp);
这是为了循环的笑声吗?永远不要循环太多。 – TheyDontHaveIT 2017-05-24 08:34:36
- 1. 在oracle中生成IP地址
- 2. 生成新的IP地址
- 3. C#生成一个随机IP地址
- 4. 如何从IP地址列表中查找IP地址范围
- 5. 如何在Java中为IP地址生成子网掩码?
- 6. 如何使用多线程ping一系列IP地址
- 7. 如何用Perl解析IP地址和地址范围?
- 8. 如何从Perl中确定本地计算机的IP地址?
- 9. 如何获取系统的IP地址
- 10. 如何在Flex中查找系统(本地)IP地址?
- 11. 在python上使用一系列IP地址的HTTP请求
- 12. 如何有人可以生成虚假的IP地址?
- 13. 如何将IP地址解析为Haskell中的IP地址?
- 14. 如何用页面中的IP地址替换IP地址中的IP地址(例如“国家,地区,城市”)
- 15. 通过命令行生成IP地址列表?
- 16. 如何使用Perl从文本文件中提取IP地址?
- 17. 如何用Perl替换文件中的完整IP地址?
- 18. 如何获取IP地址列表?
- 19. 如何在scala代码中使用系统IP地址?
- 20. 如何在PageMethod中获取IP地址?
- 21. 如何在php中获得IP地址
- 22. 如何在node.js中获得IP地址
- 23. 如何在codeigniter中查找IP地址?
- 24. 如何在C++中更改IP地址?
- 25. 如何在as3中查找ip地址?
- 26. 在iOS6中如何获得IP地址
- 27. 如何在Python中获取IP地址
- 28. 如何在Python3.4.3中获取ip地址
- 29. 创建一个.ini生成器不能通过IP地址
- 30. Perl代码获取ip地址
为什么你需要这样的事情? – pavium 2010-02-17 10:16:30
我需要自动化一些系统管理任务。是的,用perl – planetp 2010-02-17 10:19:34
好吧,Perl已经完成了一些奇怪的事情。 – pavium 2010-02-17 10:23:15