Я всегда был поклонником IPC::Run
:
use IPC::Run;
my $exitcode = run [ "ssh", "someip.com", "cat", ... ],
undef, \my $stdout, \my $stderr;
. На этом этапе результаты STDOUT
и STDERR
команды будут сохранены в этих двух лексических выражениях.
Хотя в качестве решения общей проблемы ssh
обращения к хосту и извлечения содержимого файла из Perl-программы вам может понравиться IPC::PerlSSH
:
use IPC::PerlSSH;
my $ips = IPC::PerlSSH->new( Host => "someip.com" );
$ips->use_library( "FS", qw( readfile ) );
my $content = $ips->call( "readfile", "/nfs/site/home/aa/test11.txt" );
$ips
объект здесь будет просто зависать и позволять повторное использование для сбора нескольких файлов, выполнения других команд и, как правило, повторного использования соединения, вместо того, чтобы каждый раз устанавливать новое соединение ssh
.