我需要在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