Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re: Capturing SSH output in an array.

by perl514 (Pilgrim)
on Nov 14, 2012 at 19:01 UTC ( #1003876=note: print w/replies, xml ) Need Help??

in reply to Capturing SSH output in an array.

Hi Salva !!!

Pity I can vote this only once. I installed your new updated module and it just works now !!!. Here is the script

#!/usr/bin/perl use Modern::Perl; use Net::SSH::Any; my $hostname = ''; my $username = 'perl514'; my $password = 'redhat'; my $cmd = 'ls -l'; if (my $ssh = Net::SSH::Any->new($hostname, user => $username, passwor +d => $password)) { say " I am connected to $hostname!!!"; my @out = $ssh->capture($cmd); say "The files and directories of $username on $hostname are given + below"; say "@out"; } else { say "whee...something wrong here" }

Aand here is the output !!

I am connected to!!! The files and directories of perl514 on are given belo +w total 16 drwxrwxr-x. 2 perl514 perl514 4096 Nov 14 14:52 perlscripts drwxrwxr-x. 2 perl514 perl514 4096 Nov 14 14:52 test1 drwxrwxr-x. 2 perl514 perl514 4096 Nov 14 14:52 test2 drwxrwxr-x. 2 perl514 perl514 4096 Nov 14 14:52 test3

You rock !!

Thing is, it took about 12 seconds for the script to ssh into the Centos VM Guest OS, but man I am glad this works !!...Is there a way to save the ssh keys and circumvate the password requirement? If the Net::SSH2 method will work (I still havent tried it) to add the ssh keys, then I'll try that out. But yeah, this works !! O yeah, by the way, I finally got rid of Windows 7 on my personal laptop....will try on that one too !! Its running Ubuntu 12.04 now, so itching to try out stuff on it :) So for work, I will be on Win 7 (And to manage the storage environment it will be Win 2003: Not my choice), but on personal laptop, its Linux all the way now.

Perlpetually Indebted To PerlMonks

Replies are listed 'Best First'.
Re^2: Capturing SSH output in an array.
by salva (Abbot) on Nov 15, 2012 at 09:37 UTC
    Net::SSH::Any is still a work on progress and the documentation is quite lacking, but the API is mostly a subset of that of Net::OpenSSH (IIRC, new, system, capture, capture2, error and scp methods are supported) so you should read its docs.

    The new method returns always an object, even when the connection fails. You have to use the error method to check for errors.

    In order to use public key authentication, use the constructor option key_path to pass the path of the file containing the private key to Net::SSH::Any.

    my $ssh = Net::SSH::Any->new($hostname, user => $user, key_path => "/h +ome/$user/.ssh/id_dsa"); if ($ssh->error) { say "whee...something wrong here: " . $ssh->error; } else { say " I am connected to $hostname!!!"; my @out = $ssh->capture($cmd); say "The files and directories of $username on $hostname are given + below"; say "@out"; }

    Update: BTW, the module should be as fast as any other SSH client implementation (i.e. PuTTY or OpenSSH). Connecting to some machine in the same (or a near) LAN should be a sub-second operation.

    Maybe sshd is configured on the Centos machine to use ident or your DNS configuration is broken or you have any other network problem or the host supporting the VM is overloaded.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1003876]
[1nickt]: herveus is so weird. Love his reply in that SQLite thread! Much more effective warning system to have diverse monks debunk on technical merits...
[haukex]: IPC::System:: Simple does all the $? handling for you, and does it well
[erix]: weird problem btw (that SQLite question) - I asked astroboy to let us know if he finds the cause
[hippo]: The syntax is warning enough to me.
[1nickt]: hippo lately I can tell just by the fact that Anonymous posts a reply after some hours that it is more than likely That Monk.

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (10)
As of 2017-12-13 11:46 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (360 votes). Check out past polls.