Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: net-perl-ssh2  (Прочитано 14941 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Loki
Участник

ru
Offline Offline

« : 14-07-2008 11:02 » 

подскажите как в перле создать однопотоковое соединение ssh2, т.е. мне нужно передать вот такое занчение, видел кучу примеров, но все как-то много там написано. подскажите как кароче всего?
Можно ли это начение в options или type как-нибуть засунуть?
SSH2_MSG_CHANNEL_OPEN_CONFIRMATION);
ну например у меня вот так вот не пашет, т.е. как будто опять выполняется в еще одном потоке, а мне нужно в том же...
Код:
my $ssh = new Net::SSH::W32Perl (
            $host,
            protocol => 2,
    port => 22,
    match => '/yes/',
    debug    => 1 );
 my $pack = Net::SSH::Perl::Packet->new($ssh, type => SSH2_MSG_CHANNEL_OPEN_CONFIRMATION);
 my $buffer = $ssh->packet_start(SSH2_MSG_CHANNEL_OPEN_CONFIRMATION);
 pack->send;
можно заюзать функцию, например...
Код:
$ssh->register_handler(SSH2_MSG_CHANNEL_OPEN_CONFIRMATION,
sub{
   my($channel, $buffer) = @_;
    });
 Send a packet to an ssh daemon.
    my $pack = Net::SSH::Perl::Packet->new($ssh, type => SSH_MSG_NONE);
    $pack->send;
my $channel = $ssh->login('testowiy', 'test');
_session_channel;
    $channel->open;
    $channel->register_handler(SSH2_MSG_CHANNEL_OPEN_CONFIRMATION,
 sub {
        my($channel, $packet) = @_;
        $channel->{ssh}->debug("Sending command: $cmd");
        my $r_packet = $channel->request_start("exec", 0);
        $r_packet->put_str($cmd);
        $r_packet->send;
        if ($stdin) {
            $channel->send_data($stdin);
            $channel->drain_outgoing;
            $channel->{istate} = CHAN_INPUT_WAIT_DRAIN;
            $channel->send_eof;
            $channel->{istate} = CHAN_INPUT_CLOSED;
       }
  });
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 14-07-2008 18:12 » 

Loki, может сперва авторизоваться надо?
http://cpan.org/modules/by-module/Net/Net-SSH-W32Perl-0.05.readme

Объясни, что ты хочешь добиться.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Loki
Участник

ru
Offline Offline

« Ответ #2 : 15-07-2008 08:10 » 

Авторизация у меня есть, т.е. первый скрипт это часть скрипта, с авторизацией проблем нет. У меня проблема в том что сервер разрешает ссш - коннекты только в один поток, т.е. все команды должны выполнятся в одном потоке, а не рекурсивно. Вот эта опция должна помочь это осущетвить, только вот хочу сделать все как можно проще. cpan читал, там есть готовые ф-ции, я одну опубликовал выше. Вот думаю как без подобной ф-ци обойтись и можно ли вообще в принципе, т.к. если сделать такое, то это нужно разобрать все по "ступенькам", т.е. если я юзаю $channel, то нужно юзать $pack, а как нибуть проще нельзя?
такой скрипт
Код:
use strict;
use Net::SSH::Perl;
use Net::SSH::Perl::Cipher;
my $port = "ssh";
my $host ="xxx.xx.x.x";
my $user = "xxxxxxxxx";
my $pass = "xxxxxx";
my $cmd = "show version";
my $ssh = Net::SSH::Perl->new($host,
debug => 1);
$ssh-&gtlogin($user, $pass);
my($out, $err) = $ssh->cmd($cmd);
ругается при коннекте вот так...
Channel open failure: 1: reason 4:
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 15-07-2008 09:55 » 

Loki, а каким-либо другим ssh-клиентом тебе удавалось подключиться?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Loki
Участник

ru
Offline Offline

« Ответ #4 : 15-07-2008 13:21 » 

да, конечно, проблема именно в скрипте.
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 31-07-2008 18:28 » 

Loki, к сожалению, помочь не могу: с данным модулем не работал и ставить ActivePerl ради эксперимента не хочется.

Кстати, не забывай, что Net::SSH::W32Perl заявлен как упрощенный вариант Net::SSH::Perl.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 01-08-2008 07:27 » new

а ты серификат от ssh сервера принял?
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines