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時會出現語法錯誤,但閱讀文檔和搜索相當一段時間並沒有讓我獲得任何幫助。
非常感謝! –