in reply to Re: accessing Cisco via SSH
in thread accessing Cisco via SSH

Thanks for that. I thought those were the T/F keywords in Perl, but I can figure that out I reckon. Unfortunately, the SSH part gives no errors at all. It prints out that it is connecting via SSH, but then nothing after that print actually happens. I *think* it is logging into the devices though, as if I spam 'sh users' on the switch, I can see the account log in and then quickly disappear. I also tried adding some sleep statements after each cmd, but to no avail. I also added print statements after every line in the SSH block to see if any of the statements were executing - I know, that is crude - and only the print before the snippet to snarf the hostname was successful.

Thanks again

Replies are listed 'Best First'.
Re^3: accessing Cisco via SSH
by afresh1 (Hermit) on Oct 13, 2010 at 16:08 UTC

    In this line:
    my(@hostline, $stderr, $exit) = $cs->cmd('sh run | inc hostname');
    gives you all return values in @hostline and nothing in $stderr or $exit. If you are getting logged in, it should be able to run commands. Using print is a very valuable diagnostic tool. I would probably even go as far as making something very simple for testing.

    use strict; use warnings; use Net::SSH::Perl; $ENV{'HOME'} = 'c:\strawberry'; my $ip = 'xxx'; my $user = '********'; my $pw = '********'; # If you use single quotes, only single quotes +will to be escaped with '\' my $cs = Net::SSH::Perl->new($ip); if ($cs->login( $user, $pw)) { print $cs->cmd('sh run | inc hostname'); } else { warn "Unable to login\n"; } $cs->close;