2011-06-26 77 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變量。

相關問題