Net-SSH-W32Perl strange behaviour.

Discussion in 'Perl Misc' started by fhornain@gmail.com, Mar 6, 2007.

  1. Guest

    Hi,

    Well, I am currently stuck with a stange Perl behaviour.
    Indeed, I am trying to create a Perl SSH client script on Windows -
    but you have already noticed that in the title of this message :) -
    which could be connected on a Vandyke Vshell - SSH deamon for Ms
    Windows -.

    This is the content of my script I have mostly retreived from the CPAN
    web site - http://search.cpan.org/~scotts/Net-SSH-W32Perl-0.05/lib/Net/SSH/W32Perl.pm
    - :

    use strict;
    use warnings;
    use Net::SSH::W32Perl;

    &windows();

    sub windows ()
    {
    my ($user,$pass,$host,$cmd)
    =("MY_USER","MY_PASSWORD","MY_MACHINE_ADDRESS","MY_NICE _COMMAND");
    my $ssh = Net::SSH::W32Perl->new($host,protocole =>2, debug
    => 0);
    $ssh->login($user, $pass);
    my($stdout, $stderr, $exit) = $ssh->cmd($cmd);
    print "Standard out: $stdout\nStandard Error: $stderr\nExit
    code: $exit\n";
    }

    The problem is firstly it returns the following messages :

    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 118
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110

    Ok, I agree despite this message it return the correct result.
    Well, sometime ! - I am going to explain below -

    In fact, it returns the correct result only the first or the second
    time you launch it.
    Otherwise, it freezes.
    Behaviour that I do not really want. ;)

    So, this is the ouput of this program during its execution but in
    debug mode :

    machinename: Reading configuration data /.ssh/config
    machinename: Reading configuration data /etc/ssh_config
    machinename: Connecting to localhost, port 22.
    machinename: Socket created, turning on blocking...
    machinename: Remote protocol version 2.0, remote software version
    VShell_2_6_4_4
    8 VShell
    machinename: Net::SSH::perl Version 1.23_01, protocol version 2.0.
    machinename: No compat match: VShell_2_6_4_448 VShell
    machinename: Connection established.
    machinename: Sent key-exchange init (KEXINIT), wait response.
    machinename: Algorithms, c->s: 3des-cbc hmac-sha1 none
    machinename: Algorithms, s->c: 3des-cbc hmac-sha1 none
    machinename: Entering Diffie-Hellman Group 1 key exchange.
    machinename: Sent DH public key, waiting for reply.
    machinename: Received host key, type 'ssh-dss'.
    machinename: Host 'localhost' is known and matches the host key.
    machinename: Computing shared secret key.
    machinename: Verifying server signature.
    machinename: Waiting for NEWKEYS message.
    machinename: Enabling incoming encryption/MAC/compression.
    machinename: Send NEWKEYS, enable outgoing encryption/MAC/
    compression.
    machinename: Sending request for user-authentication service.
    machinename: Service accepted: ssh-userauth.
    machinename: Trying empty user-authentication request.
    machinename: Authentication methods that can continue: password.
    machinename: Next method to try is password.
    machinename: Trying password authentication.
    machinename: Login completed, opening dummy shell channel.
    machinename: channel 0: new [client-session]
    machinename: Requesting channel_open for channel 0.
    machinename: channel 0: open confirm rwindow 32768 rmax 16384
    machinename: Got channel open confirmation, requesting shell.
    machinename: Requesting service shell on channel 0.
    machinename: channel 1: new [client-session]
    machinename: Requesting channel_open for channel 1.
    machinename: Entering interactive session.
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    machinename: Sending command: cluster localhost group /status
    machinename: Requesting service exec on channel 1.
    machinename: channel 1: open confirm rwindow 32768 rmax 16384
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 118
    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110

    Now, cherry on the cake!
    I have tried to do the same test with an OpenSSH deamon - for the
    server side, I mean -.
    Ok, I always have the error message :

    IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    BlaBla...

    But in contrary of Vshell the Perl SSH client script does not seem
    stuck.
    it runs every time.

    This what I have noticed :
    With Vandyke VShell, the script uses

    machinename: channel 0: open confirm rwindow 32768 rmax 16384

    However with OpenSSH, the script uses :

    machinename: channel 1: open confirm rwindow 0 rmax 32768


    So I have got five questions :


    - How can I make my little Perl SSH Client script work ?
    - How can I fix error message during the Perl script execution ?
    - Why there is difference between Vshell and OpenSsh with the SSH
    packet window size ?
    - Is there a way to specify the SSH packet window size in Perl?
    - Could you give me a hand please ?

    Thanks a lot in advance.
    BR
    Fred
     
    , Mar 6, 2007
    #1
    1. Advertising

  2. Guest

    Hi again,

    I think that I forgot two important information.

    Well, I use active perl and Net-SSH-W32Perl modules comming from
    http://www.soulcage.net/PPDS.58/.

    And yes, I have still got one little questions.

    - Knowing that I can not use public key, do you know another mean
    in perl to access SSH Server on Windows platform ?

    Thanks in advance for your help.
    BR
    Fred
     
    , Mar 6, 2007
    #2
    1. Advertising

  3. Guest

    > s/protocole/protocol/
    Done ! But the problem is still there.

    >Please do read and follow the posting guidelines for this group.

    I already done that.
    What is wrong with my post ?

    Thanks a lot for your help.
    BR
    Fred
     
    , Mar 6, 2007
    #3
  4. Guest

    On Mar 6, 3:54 am, wrote:
    > Hi,
    >
    > Well, I am currently stuck with a stange Perl behaviour.
    > Indeed, I am trying to create a Perl SSH client script on Windows -
    > but you have already noticed that in the title of this message :) -
    > which could be connected on a Vandyke Vshell - SSH deamon for Ms
    > Windows -.
    >
    > This is the content of my script I have mostly retreived from the CPAN
    > web site -http://search.cpan.org/~scotts/Net-SSH-W32Perl-0.05/lib/Net/SSH/W32Pe...
    > - :
    >
    > use strict;
    > use warnings;
    > use Net::SSH::W32Perl;
    >
    > &windows();
    >
    > sub windows ()
    > {
    > my ($user,$pass,$host,$cmd)
    > =("MY_USER","MY_PASSWORD","MY_MACHINE_ADDRESS","MY_NICE _COMMAND");
    > my $ssh = Net::SSH::W32Perl->new($host,protocole =>2, debug
    > => 0);
    > $ssh->login($user, $pass);
    > my($stdout, $stderr, $exit) = $ssh->cmd($cmd);
    > print "Standard out: $stdout\nStandard Error: $stderr\nExit
    > code: $exit\n";
    > }
    >
    > The problem is firstly it returns the following messages :
    >
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 118
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    >
    > Ok, I agree despite this message it return the correct result.
    > Well, sometime ! - I am going to explain below -
    >
    > In fact, it returns the correct result only the first or the second
    > time you launch it.
    > Otherwise, it freezes.
    > Behaviour that I do not really want. ;)
    >
    > So, this is the ouput of this program during its execution but in
    > debug mode :
    >
    > machinename: Reading configuration data /.ssh/config
    > machinename: Reading configuration data /etc/ssh_config
    > machinename: Connecting to localhost, port 22.
    > machinename: Socket created, turning on blocking...
    > machinename: Remote protocol version 2.0, remote software version
    > VShell_2_6_4_4
    > 8 VShell
    > machinename: Net::SSH::perl Version 1.23_01, protocol version 2.0.
    > machinename: No compat match: VShell_2_6_4_448 VShell
    > machinename: Connection established.
    > machinename: Sent key-exchange init (KEXINIT), wait response.
    > machinename: Algorithms, c->s: 3des-cbc hmac-sha1 none
    > machinename: Algorithms, s->c: 3des-cbc hmac-sha1 none
    > machinename: Entering Diffie-Hellman Group 1 key exchange.
    > machinename: Sent DH public key, waiting for reply.
    > machinename: Received host key, type 'ssh-dss'.
    > machinename: Host 'localhost' is known and matches the host key.
    > machinename: Computing shared secret key.
    > machinename: Verifying server signature.
    > machinename: Waiting for NEWKEYS message.
    > machinename: Enabling incoming encryption/MAC/compression.
    > machinename: Send NEWKEYS, enable outgoing encryption/MAC/
    > compression.
    > machinename: Sending request for user-authentication service.
    > machinename: Service accepted: ssh-userauth.
    > machinename: Trying empty user-authentication request.
    > machinename: Authentication methods that can continue: password.
    > machinename: Next method to try is password.
    > machinename: Trying password authentication.
    > machinename: Login completed, opening dummy shell channel.
    > machinename: channel 0: new [client-session]
    > machinename: Requesting channel_open for channel 0.
    > machinename: channel 0: open confirm rwindow 32768 rmax 16384
    > machinename: Got channel open confirmation, requesting shell.
    > machinename: Requesting service shell on channel 0.
    > machinename: channel 1: new [client-session]
    > machinename: Requesting channel_open for channel 1.
    > machinename: Entering interactive session.
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > machinename: Sending command: cluster localhost group /status
    > machinename: Requesting service exec on channel 1.
    > machinename: channel 1: open confirm rwindow 32768 rmax 16384
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 118
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    >
    > Now, cherry on the cake!
    > I have tried to do the same test with an OpenSSH deamon - for the
    > server side, I mean -.
    > Ok, I always have the error message :
    >
    > IO::Socket::INET at C:/Perl/site/lib/Net/SSH/Perl/SSH2.pm line 295
    > IO::String at C:/Perl/site/lib/Net/SSH/Perl/Channel.pm line 110
    > BlaBla...
    >
    > But in contrary of Vshell the Perl SSH client script does not seem
    > stuck.
    > it runs every time.
    >
    > This what I have noticed :
    > With Vandyke VShell, the script uses
    >
    > machinename: channel 0: open confirm rwindow 32768 rmax 16384
    >
    > However with OpenSSH, the script uses :
    >
    > machinename: channel 1: open confirm rwindow 0 rmax 32768
    >
    > So I have got five questions :
    >
    > - How can I make my little Perl SSH Client script work ?
    > - How can I fix error message during the Perl script execution ?
    > - Why there is difference between Vshell and OpenSsh with the SSH
    > packet window size ?
    > - Is there a way to specify the SSH packet window size in Perl?
    > - Could you give me a hand please ?
    >
    > Thanks a lot in advance.
    > BR
    > Fred


    RE: How can I fix error message during the Perl script execution ?

    I meet the same problem those days, and I try to find the solution
    from internet.
    However, there are few info about this issue. So I decide to dug it by
    myself. When I debug the script into Carp.pm (version 1.04). I find
    the reason.

    in line 271 just replace

    sub carp { warn shortmess @_ }

    to

    sub carp { }

    all strange messages are gone.

    Vincent Chen
     
    , Mar 9, 2007
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Mike Solomon

    problem with Net::SSH::W32Perl;

    Mike Solomon, Sep 20, 2004, in forum: Perl Misc
    Replies:
    1
    Views:
    111
    Mike Solomon
    Sep 21, 2004
  2. Replies:
    0
    Views:
    157
  3. prabu
    Replies:
    0
    Views:
    90
    prabu
    Mar 15, 2006
  4. seth

    Net::SSH::W32Perl - hanging

    seth, Mar 17, 2007, in forum: Perl Misc
    Replies:
    0
    Views:
    149
  5. 0m
    Replies:
    1
    Views:
    322
Loading...

Share This Page