Проблема такая
Код:use strict; use Net::SSH::W32Perl;
use Math::BigInt::Calc ();
use Net::SSH::Perl::Cipher;
my $host = "xxxxxxxxxxxxxxxxx";
my $user = "root";
my $pass = "xxxxxxxxxxxxxxxxx";
my $cmd = "ls -al";
my $ssh = new Net::SSH::W32Perl($host, protocol => 2, debug=>1);my ($stdout, $stderr, $exit) = $ssh->cmd($cmd,"\n");
print "Error = $stderr \n Out = $stdout \n Error = $exit"; exit 0;
Вот что выдаетSlawka_Book: Remote protocol version 1.99, remote software version OpenSSH_3.9p1
Slawka_Book: Net::SSH::Perl Version 1.30, protocol version 2.0.
Slawka_Book: No compat match: OpenSSH_3.9p1.
Slawka_Book: Connection established.
Slawka_Book: Sent key-exchange init (KEXINIT), wait response.
Slawka_Book: Algorithms, c->s: 3des-cbc hmac-sha1 none
Slawka_Book: Algorithms, s->c: 3des-cbc hmac-sha1 none
Slawka_Book: Entering Diffie-Hellman Group 1 key exchange.
Slawka_Book: Sent DH public key, waiting for reply.
Slawka_Book: Received host key, type 'ssh-dss'.
Slawka_Book: Host 'xxxxxxxxxxxxx' is known and matches the host key.
Slawka_Book: Computing shared secret key.
Slawka_Book: Verifying server signature.
Slawka_Book: Waiting for NEWKEYS message.
Slawka_Book: Enabling incoming encryption/MAC/compression.
Slawka_Book: Send NEWKEYS, enable outgoing encryption/MAC/compression.
Slawka_Book: Sending request for user-authentication service.
Slawka_Book: Service accepted: ssh-userauth.
Slawka_Book: Trying empty user-authentication request.
Slawka_Book: Authentication methods that can continue: publickey,gssapi-with-mic,password.
Slawka_Book: Next method to try is publickey.
Slawka_Book: Next method to try is password.
Slawka_Book: Trying password authentication.
Slawka_Book: Login completed, opening dummy shell channel.
Slawka_Book: channel 0: new [client-session]
Slawka_Book: Requesting channel_open for channel 0.
Slawka_Book: channel 0: open confirm rwindow 0 rmax 32768
Slawka_Book: Got channel open confirmation, requesting shell.
Slawka_Book: Requesting service shell on channel 0.
Slawka_Book: channel 1: new [client-session]
Slawka_Book: Requesting channel_open for channel 1.
Slawka_Book: Entering interactive session.
Slawka_Book: Sending command: cat
Slawka_Book: Requesting service exec on channel 1.
Slawka_Book: channel 1: send eof
Slawka_Book: channel 1: open confirm rwindow 131043 rmax 32768Далее просто висит =(
Что делать Помогните
>Далее просто висит =(
>
>Что делать ПомогнитеДа и рад бы помочь, но где виндовс то взять?
>[оверквотинг удален]
>Код:
>
>use strict; use Net::SSH::W32Perl;
>use Math::BigInt::Calc ();
>use Net::SSH::Perl::Cipher;
>my $host = "xxxxxxxxxxxxxxxxx";
>my $user = "root";
>my $pass = "xxxxxxxxxxxxxxxxx";
>my $cmd = "ls -al";
>my $ssh = new Net::SSH::W32Perl($host, protocol => 2, debug=>1);сам не знаю, да и читать лень, но кое что вродь не сходится, логин/пасс объявили, а при создании объекта вроде не использовали...
вы конечно можете ткнуть сюда:
>Slawka_Book: Trying password authentication.
>Slawka_Book: Login completed, opening dummy shell channel.
>Slawka_Book: channel 0: new [client-session] ...то бишь может доки к модулю перечитать..?
>[оверквотинг удален]
>Slawka_Book: Requesting channel_open for channel 1.
>Slawka_Book: Entering interactive session.
>Slawka_Book: Sending command: cat
>Slawka_Book: Requesting service exec on channel 1.
>Slawka_Book: channel 1: send eof
>Slawka_Book: channel 1: open confirm rwindow 131043 rmax 32768
>
>Далее просто висит =(
>
>Что делать Помогнитеможет не совсем в тему но:
была у меня некая проблема с запуском ssh клиента под виндоус из под сервиса. он висел (то ли ещё до коннекта то ли после). (правда был он скомпилён под cygwin, а выполнять он должен был программу после коннекта, аутентификация была по ключам)
там нужно было где то в настройках службы из под которой он запускался вроде поставить флажок доступ к десктопу или что то в этом роде. сча виндоуса под рукой нет точно сказать не могу. но я думаю рыть надо сюда.
>[оверквотинг удален]
>
>my ($stdout, $stderr, $exit) = $ssh->cmd($cmd,"\n");
>print "Error = $stderr \n Out = $stdout \n Error = $exit";
>exit 0;
>
>
>Вот что выдает
>
>Slawka_Book: Remote protocol version 1.99, remote software version OpenSSH_3.9p1
>Slawka_Book: Net::SSH::Perl Version 1.30, protocol version 2.0....
>Slawka_Book: Entering interactive session.
>Slawka_Book: Sending command: cat
>Slawka_Book: Requesting service exec on channel 1.
>Slawka_Book: channel 1: send eof
>Slawka_Book: channel 1: open confirm rwindow 131043 rmax 32768
>
>Далее просто висит =(
>
>Что делать ПомогнитеАналогичная фигня.
опытным путём установлено, что при использовании SSH Protocol v1 такого нет.т.е.
my $ssh = new Net::SSH::W32Perl($host, protocol => 1, debug=>1);должен решить проблему
>>Slawka_Book: Entering interactive session.
>>Slawka_Book: Sending command: cat
>>Slawka_Book: Requesting service exec on channel 1.
>>Slawka_Book: channel 1: send eof
>>Slawka_Book: channel 1: open confirm rwindow 131043 rmax 32768
>>
>>Далее просто висит =(
>>
>>Что делать ПомогнитеЧтобы не вис надо подправить библиотеку perl.pm в c:/perl/site/lib/Net/SSH
строку (№50) my $proto_class = join '::', __PACKAGE__,($proto == PROTOCOL_SSH2 ? "SSH2" : "SSH1"); надо закоментить, и написать следующее:
my $proto_class = $ssh->protocol_class($proto);НЕДЕЛЮ МУЧИЛСЯ!!!!