Perl Script возвращает значение в качестве входных данных для второго Perl-скрипта - PullRequest
1 голос
/ 21 ноября 2011

Мне нужно написать скрипт getPwd.pl($user), который анализирует файл паролей и возвращает пароль для конкретного пользователя.

файл для анализа (password.txt)

DEFINE ALICE = 'alice#1';
DEFINE BENICE = 'benice#1';
DEFINE CATHY = 'cathy#1';

Второй сценарий authUser.pl должен вызвать getPwd.pl($user), и возвращенное значение будет передано во второй сценарий для проверки подлинности пользователя.

Модули не являются опцией, поскольку getPwd.pl будет принадлежать другому пользователю, и я буду использовать sudo для выполнения getPwd.pl.

Пожалуйста, помогите и предоставьте некоторые рекомендации о том,иди об этом.

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

Я согласен, что система в целом должна быть исправлена. И если вы можете выполнить sudo, то у вас наверняка есть возможность решить проблему!

Однако, чтобы ответить на реальный вопрос, лучше всего было бы вызвать getPwd.pl в качестве команды (а не функции, как вы показали выше).

my $pwd = `getPwd.pl $user`

А затем возьмите аргумент $ pwd в качестве ответа.

Однако, если вы хотя бы сможете сделать другой файл модулем или исходным файлом, вам будет намного лучше.

0 голосов
/ 21 ноября 2011

Вы можете просто напечатать значение, извлеченное из файла паролей, и использовать обратные метки или qx(), чтобы зафиксировать его в сценарии авторизации.Например:

my $pass = qx(/path/to/password.pl cathy);

Сценарий пароля может быть прост:

my $name = shift;
open my $fh, '<', '/path/to/password.txt' or die $!;
while (<$fh>) {
    /^DEFINE $name =/i && last; # Optional /i modifier for case insensitive match
}

if ($_ && /^DEFINE $name = '([^']+)'/) { # Must check $_ is not empty
    print $1;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...