Concordo que os exemplos atuais parecem úteis, mas nem sempre funcionam! Meus exemplos anteriores estão incluídos nisso. Eu não sou especialista em Perl, mas eu juntei o seguinte e funciona para mim:
#!/usr/bin/perl -w
use strict;
use Net::SSH2;
my $ssh2 = Net::SSH2->new();
$ssh2->connect('tank') or die $!;
my $auth = $ssh2->auth_publickey(
'oli',
'/home/oli/.ssh/id_rsa'
);
my $chan2 = $ssh2->channel();
$chan2->blocking(1);
# This is where we send the command and read the response
$chan2->exec("uname -a\n");
print "$_" while <$chan2>;
$chan2->close;
Obviamente, você vai querer mudar o nome do host, nome de usuário e localização da sua chave RSA / DSA / etc. Além disso, você precisará da biblioteca compat para fazer isso funcionar bem no Ubuntu:
sudo apt-get install libnet-openssh-compat-perl
E finalmente - presumindo que você chame isso de script.pl
- chame assim:
perl -MNet::OpenSSH::Compat=Net::SSH2 script.pl