2014-07-23 61 views
0

我知道這種問題之前已經被問到過,但我想我可能迷路了,試圖理解響應中提供的示例。所以我在這裏再問一次。如何在perl中存儲以遠程方式運行的命令的輸出

我必須從遠程計算機上的特定文件夾收集文件列表(僅限絕對文件名)。

在我的Linux機器:

opendir - 本地工作。我希望它可以遠程工作。

use Net::FTP - 作品,但FTP禁用。

use Net::SFTP - 可以工作,但沒有安裝Net :: SFTP。

我想要一些方法來獲得這個信息,考慮到我必須使用sftp或ssh。

my $cmd = "ssh user\@host 'find x/y/z -type f'"; 
my @expectedOutputHere = system($cmd); 

$expectedOutputHere不包含文件列表(作爲輸出)。 一旦我有了輸出,我打算使用File :: Basename :: basename來獲取絕對名稱。但是,我如何首先收集數組中的輸出?

回答

4
my @expectedOutputHere = `$cmd`; 

manual說:The collected standard output of the command is returnedIn list context, returns a list of lines

對於system(),說明書指定:The return value is the exit status of the program

+0

它的首選使用['QX(CMD $)'](http://perldoc.perl.org/perlop.html#Quote-Like-Operators)語法。它比後面的標記更容易看到,並且在格式化方面有更多的靈活性。 –

1

試試這個:

my $cmd = "ssh user\@host 'find x/y/z -type f'"; 
my @expectedOutputHere = `$cmd`; 
chomp(@expectedOutputHere); 
print Dumper @expectedOutputHere; 
+0

謝謝anurag :) – anurag86

相關問題