我想用Nmap::Parser
将nmap
扫描的XML输出转换成CSV文件,我在开始时就遇到了问题。Nmap :: Parser,大文件上的分段错误
解析小型TCP/UDP扫描可以正常工作,但是当我尝试转换大型文件(例如20 MB)时,尤其是打开所有65535 UDP端口的文件时,出现分段错误。
这个问题似乎是“parsefile”的方法。
我试图在Linux和Mac OS X版本不同的Perl 5.10/5.14的相同的结果。请参阅下面的代码片段。
#!/usr/bin/env perl
use strict; use warnings;
use Nmap::Parser;
my $np1 = new Nmap::Parser;
my $xmlin = $ARGV[0];
sub read_file {
$np1->parsefile($xmlin);
for my $host ($np1->all_hosts()) {
for my $port ($host->udp_ports()) {
print $host->ipv4_addr()." ".$port."\n";
}
}
}
&read_file;
可以尝试用Perl 5.16?它看起来像Perl中的一个错误,在这里描述:http://www.perlmonks.org/?node_id=955478 – mirod 2012-07-23 09:37:57
嗨mirod,非常感谢你的帮助。升级Perl取得了诀窍。我刚刚安装了perl 5.16,现在一切正常。成功转换70MB XML文件。 :-) – rhe24 2012-07-23 11:47:11
请提供这作为一个答案,并接受它。 – 2012-10-15 20:37:41