Как ssh с помощью сценария Perl, запустить команду и вернуть результат ...?

Как ясно объяснено в этом вопросе, пожалуйста, дайте мне возможность использовать ssh для компьютера, использующего сценарий perl, выполнить несколько строк сценария и вернуть вывод исходному компьютеру.

Обнаружил несколько документов в Интернете по этому вопросу, но ничего не кажется информативным / понятным.

Пожалуйста, помогите.

0
задан 9 June 2015 в 12:05

2 ответа

Я соглашаюсь, что текущие примеры выглядят полезными, но не всегда работают! Мои предыдущие примеры включены в это. Я не эксперт по Perl вообще, но я починил следующее, и это работает на меня:

#!/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;

Очевидно, Вы захотите изменить имя хоста, имя пользователя и местоположение Вашего RSA/DSA/etc ключа. Кроме того, Вам будет нужна разделять библиотека для создания этой работы хорошо над Ubuntu:

sudo apt-get install libnet-openssh-compat-perl

И наконец — принятие Вас называют его script.pl— назовите его как так:

perl -MNet::OpenSSH::Compat=Net::SSH2 script.pl
5
ответ дан 9 June 2015 в 12:05

Вы могли всегда просто выполнять системный вызов из своего сценария оболочки. Пока Вы можете ssh от оболочки, Вы ничего не должны устанавливать:

perl -e '$r=`ssh user\@host hostname`; print "Remote host:$r"'

, Если необходимо выполнить это автоматически, у Вас есть несколько опций:

  1. Делают это чисто, как описано в ответ Oli .
  2. Настроенный passwordless, основанная на ключе аутентификация SSH .
  3. Использование sshpass

    Первый, установите его из репозиториев:

    sudo apt-get install sshpass
    

    Тогда выполняет это:

    perl -e '$r=`sshpass -p "password" ssh user\@host hostname`; print "Remote host:$r"'
    
0
ответ дан 9 June 2015 в 12:05

Другие вопросы по тегам:

Похожие вопросы: