在下面的代碼中,我需要打印來自變量$stout
,$stderr
的輸出。我怎樣才能做到這一點,而不是沒有使用$ssh = Net::SSH::Perl->new
?perl系統命令執行
#!/usr/bin/perl
use strict;
use warnings;
use Net::SSH::Perl;
use FindBin qw($RealBin);
use File::Basename;
use lib "/nfs/site/proj/dpg/tools/lib/perl";
use Util;
use Getopt::Std;
use Net::SSH::Perl;
use Cwd;
use File::Copy;
my $host = 'someip.com.com';
my $pass = '';
my $user = '';
my $cmd = 'pwd';
my($stdout,$stderr,$exit) = system('ssh someip.com cat /nfs/site/home/aa/test11.txt') ;
if ($stdout) {
print "Standard output is \n$stdout";
} elsif($stderr) {
print "Standard error is \n$stderr";
}
根據perldoc,系統返回退出代碼,所以你的命令系統('ssh ...')可能會把退出代碼設置爲$ stdout並且讓$ stderr和$ exit定義爲undefined。變量? – 2012-03-19 10:01:54
$ stdout我期待的文件的內容,如果文件doest存在,我期待stderr中的錯誤信息 – Rajeev 2012-03-19 10:04:33
如果你反向運行而不是系統,它會返回輸出,但我不是確定如何區分成功的輸出(文件)和不成功的輸出(錯誤信息)。$ output = \'ssh someip.com ... \' – 2012-03-19 10:11:09