我需要编写一个解析密码文件的脚本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
。
请协助并就如何解决此问题提供一些指导。
答案 0 :(得分:1)
我同意整个系统应该修复。如果你能执行sudo那么你当然有能力解决这个问题!
然而,要回答实际问题,最好的办法是将getPwd.pl作为一个命令调用(而不是像上面所示的函数)。
my $pwd = `getPwd.pl $user`
然后将$ pwd参数作为响应。
但是,如果您至少可以将其他文件作为模块或源文件,那么您的状况会更好。
答案 1 :(得分:0)
您只需打印从密码文件中提取的值,然后使用反引号或qx()
在授权脚本中捕获它。 E.g:
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;
}