有没有办法根据符号启动nmap扫描?我希望能够运行nmap扫描 当我在终端上执行我的代码时:script.pl -b xx.xxx.xxx。我尝试使用if语句执行此操作,但它正在运行。有谁知道hpw能够正确地做到这一点吗?
if("-b")
{
('nmap -v -r ARGS[0] >>file.txt')
}
答案 0 :(得分:5)
使用perl的 Getopt :: Long 模块,可以轻松解析命令行选项。这是一个例子:
use Getopt::Long;
my ($b);
my $result = GetOptions ("b=s" => \$b);
if ($b) {
system ('nmap -v -r ' . $b . ' >>file.txt');
}
GetOptions 中的 b = s 从 -b 获取字符串参数,并将其设置为 $ b 变量。
答案 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接受一串用作标志的字母,并将它们及其值映射到哈希表。 getopt(“ab”,%opt)会将%opt设置为类似(a =>“foo”,b =>“bar”)的内容,前提是a和b都是在调用脚本时实际使用的。