#!/usr/bin/perl

use strict;
use warnings;

use Net::Appliance::Session;

# list of devices to contact
my @ios_device_ip_addresses = ('10.250.249.215', '10.250.249.216');

my $ios_username        = 'cisco1';
my $ios_password        = 'cisco';

# step through each device in turn
DEVICE:
for my $ios_device_ip ( @ios_device_ip_addresses ) {

    my @version_info; # array to hold data from device

    my $session_obj = Net::Appliance::Session->new(
        Host      => $ios_device_ip,
        Transport => 'SSH',
    );
    
    # start eval block to trap errors in interactive session
    eval {
    
        # try to login to the ios device, ignoring host check
        $session_obj->connect(
            Name => $ios_username,
            Password => $ios_password,
            SHKC => 0
        );
        
        # get our running config
        @version_info =  $session_obj->cmd('show ver');
        
        # close down our session
        $session_obj->close;
    };
    
    # check if we had an error
    if ( UNIVERSAL::isa($@,'Net::Appliance::Session::Exception') ) {
             print "Net::Appliance::Session message : "
                        . $@->message
                        . " \n";  # fault description from Net::Appliance::Session
             print "Net::Telnet message : "
                        . $@->errmsg
                        . "\n";   # message from Net::Telnet
             print "Last line of output from device : "
                        . $@->lastline
                        . "\n\n"; # last line of output from your appliance
             next DEVICE
    }
    elsif ($@) {
           print "We had an issue when accessing the device : $ios_device_ip \n";
           print "The reported error was : $@ \n\n"; # error from Net::Appliance::Session
           next DEVICE
    }
    
    print @version_info;

# end of for loop
}

#
# Copyright (c) Nigel Bowden 2007. All Rights Reserved.
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of version 2 of the GNU General Public License as published by the
# Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
# St, Fifth Floor, Boston, MA 02110-1301 USA
