2011-06-26 57 views
1

有没有办法启动基于符号的nmap扫描?我想能够运行一个nmap扫描
当我在终端执行我的代码,如下所示:script.pl -b xx.xxx.xxx。我尝试使用if语句来做到这一点,但它的工作。有谁知道hpw正确地做到这一点?如何用命令行参数在perl中启动进程?

if("-b") 
{ 
('nmap -v -r ARGS[0] >>file.txt') 
} 
+1

“符号”是否成为“命令行参数”的某种代码字? –

回答

1

如果您使用单个字母作为标志Getopt :: Std是您所需要的。

use Getopt::Std; 

my %opt; 
getopt("b",\%opt); 

system "nmap -v -r $opt{b} >> file.txt" if exists $opt{b}; 

getopt将一个字符串用作标志,并将它们及其值映射到散列表。如果在调用脚本时实际使用a和b,则getopt(“ab”,%opt)会将%opt设置为类似于(a =>“foo”,b =>“bar”)的内容。

5

命令行选项解析由使用Perl的Getopt的龙::模块容易。下面是一个例子:

use Getopt::Long; 

my ($b); 

my $result = GetOptions ("b=s" => \$b); 

if ($b) { 
    system ('nmap -v -r ' . $b . ' >>file.txt'); 
} 

b = S内部GetOptions会从-b字符串参数,并且将其设置为$ B变量。

相关问题