В приведенном ниже коде я пытаюсь клонировать git-репозиторий на другую машину с помощью сценария Perl.
Если я печатаю $output
, я получаю все сообщения для входа в систему, т. Е. Содержимое /etc/motd/
, но не фактический вывод команды.
Как решить эту проблему? Я что-то не так делаю при выполнении команды ssh?
sub myexec_remote
{
my($cmd, $hostname, $filename) = @_;
my $stdout = $stderr = $exit= "";
my ($output) = `ssh $hostname $cmd 2>&1`;
## this is the command i.e, executed
##command is ssh 111.22.11.32 "git clone --bare gt@l.com:/nfs/git/ /nfs/new123/"
$exit = $?;
if (defined $output)
{
open(MYOUTFILE, ">$filename");
print MYOUTFILE "$output";
close(MYOUTFILE);
}
}
Я использую обратные метки, потому что иногда ssh выполняется без пароля , и я видел, что модуль NET: SSH не поддерживает его ...