Как запустить процесс в Perl с аргументом командной строки? - PullRequest
1 голос
/ 27 июня 2011

Есть ли способ инициировать сканирование nmap на основе символа? Я хочу иметь возможность запустить сканирование Nmap
когда я выполняю свой код в терминале что-то вроде этого: script.pl -b xx.xxx.xxx. Я пытался использовать оператор if для этого, но он работает. Кто-нибудь знает hpw, чтобы сделать это правильно?

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

Ответы [ 2 ]

5 голосов
/ 27 июня 2011

Синтаксический анализ параметров командной строки осуществляется с помощью модуля perl Getopt :: Long . Вот пример:

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 .

1 голос
/ 27 июня 2011

Если вы используете одну букву в качестве флага 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 фактически используются при вызове скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...