1
我有Python应用程序与线这样的Ubuntu服务器16.04上运行:呼叫GetOptions
var1 = "--var1 " + var1
var2 = "--var2 " + var2
proc = subprocess.Popen(["sudo", "perl", "/path/script.pl", str(var1), str(var2) ], stdout=subprocess.PIPE)
的Perl脚本包含以下几行:
#!/usr/bin/perl
use File::Path;
use Getopt::Long;
use strict;
use warnings;
my $var1 = '';
my $var2 = '';
print "Started ";
GetOptions ("var1=s" => \$var1, "var2=s" => \$var2) or die ("Error");
print "Vars: FIRST = $var1 SECOND = $var2 ";
...
这个应用程序是由运行sudo组的成员,他有权在没有密码的情况下运行任何sudo命令。 当我从终端运行此命令作为用户:
su that_user
sudo perl /path/script.pl --var1 XXX --var2 YYY
即时得到所需的输出:
Started
Vars: FIRST = XXX SECOND = YYY
但是,当我运行它从蟒子我只得到:
Started
如果我删除
or die ("Error")
部分,我将获得:
Started
Vars: FIRST = SECOND =
而且没有错误或任何东西。由于我对perl很陌生,我怀疑在调用GetOptions时会出现语法错误,但阅读文档和搜索相当一段时间并没有让我获得任何帮助。
非常感谢! –