in reply to Re: Cisco Telnet
in thread Cisco Telnet

Thanks for the input...but, I am not able to get the script to run properly I got this far:
use strict; use Net::Telnet::Cisco; open my $log, '>', 'logfilepath' or die "Cannnot open log file : $!\n" +; open my $seed, '+<', 'seedfilepath' or die "Cannot open file : $!\n"; while($seed) { chomp $seed; my $Telnet = Net::Telnet::Cisco->new(Host => $_ or die "Cannot ope +n session to '$seed': $!\n"); $Telnet->login(Name => 'rschuman', Password => 'tagheuer1') or die + "Cannot log into device '$_': $!\n"; print $log "$_\n", map $Telnet->cmd($_), 'show line aux 0'; }
I get the following error: Useless use of a constant in void context at C:\Documents and Settings\rschuman\ Desktop\telnet2.pl line 24. Cannot open session to 'GLOB(0x1abf15c)': I also realized that the original script's output was to much so i added a grep of the output:
use strict; use Net::Telnet::Cisco; # open (LOGFILE, '>logfilepath') or die "Cannnot open log file : $!\n"; # open (SEEDFILE, 'seedfilepath') or die "Cannot open file : $!\n"; my @iplist = <SEEDFILE>; foreach my $ip (@iplist) { select LOGFILE; print "$ip\n"; my $Telnet = Net::Telnet::Cisco->new(Host => $ip) or die "Cannot o +pen session to '$ip': $!\n"; $Telnet->login(Name => 'user', Password => 'pass') or die "Cannot +log into device '$ip': $!\n"; my $output = $Telnet->cmd('show line aux 0'); my $matchlines = grep (/Modem hardware state:/, $output); print "$matchlines\n"; } close LOGFILE; close SEEDFILE;
I also get the following error even though the script does run: Argument "" isn't numeric in numeric gt (>) at C:/Perl/site/lib/Net/Telnet.pm li ne 2569, <SEEDFILE> line 3.

Replies are listed 'Best First'.
Re^3: Cisco Telnet
by Aristotle (Chancellor) on Feb 19, 2003 at 15:37 UTC
    In the first script you forgot to actually use the filehandle to read from it: it must be while(<$seed>) - note the angle brackets. Also, you misplaced a paren two lines later - it must be
    my $Telnet = Net::Telnet::Cisco->new(Host => $_) or die "Cannot open session to '$seed': $!\n";

    Makeshifts last the longest.

      Aristotle, I appreciate you help on this and i want to have as clean a script a possible. Here is my latest version:
      use strict; use Net::Telnet::Cisco; open my $log, '>', 'logfile' or die "Cannnot open log file : $!\n"; open my $seed, '<', 'seedfile' or die "Cannot open seed file : $!\n"; while(<$seed>) { chomp; my $Telnet = Net::Telnet::Cisco->new(Host => $_) or die "Cannot op +en session to '$seed': $!\n"; $Telnet->login(Name => 'user', Password => 'pass') or die "Cannot +log into device '$_': $!\n"; print $log "$_\n", map $Telnet->cmd($_), 'show line aux 0'; }
      I get the following error: Argument "" isn't numeric in numeric gt (>) at C:/Perl/site/lib/Net/Telnet.pm li ne 2569, <$seed> line 1. Modification of a read-only value attempted at C:/Perl/site/lib/Net/Telnet/Cisco .pm line 751, <$seed> line 1. I can't seem to figure out where Perl thinks i am trying to modify the varible from the filehandle.
        I'm basically fishing in the dark here, but maybe the following will work. Note how it's not passing a literal constant to ->cmd() anymore, it passes the (modifiable) elements of an array. It's the only spot I can think of; if that's not it, you probably have to contact the module author.
        use strict; use Net::Telnet::Cisco; open my $log, '>', 'logfile' or die "Cannnot open log file : $!\n"; open my $seed, '<', 'seedfile' or die "Cannot open seed file : $!\n"; my @commands =('show line aux 0'); while(<$seed>) { chomp; my $Telnet = Net::Telnet::Cisco->new(Host => $_) or die "Cannot open session to '$_': $!\n"; $Telnet->login(Name => 'user', Password => 'pass') or die "Cannot log into device '$_': $!\n"; print $log "$_\n", $Telnet->cmd($_), @commands; }

        Makeshifts last the longest.