Sponsored Content
Top Forums Shell Programming and Scripting Perl telnet to router run commands from file Post 302873529 by numele on Tuesday 12th of November 2013 10:04:03 AM
Old 11-12-2013
Perl telnet to router run commands from file

I have a perl script that is called with a router name command list file and output file. The command file can be very large, up to 3k of commands. At first I dumped the command list file to an array and ran the entire file on the router and captured the output. It worked ok for a command list in the hundreds but not thousands. So I changed it to the below to read each line of the command list and wait for a prompt.

It works well but since I am a perl beginner I was hoping some experienced perl people can have a look and see if this can be done any better.

Code:
called like this: perl myscript.pl -r <router_name> -f <command_file> -o <output_file>
 
#!/usr/local/bin/perl
use Net::Telnet;
use diagnostics;
use strict;
use Getopt::Std;
my %opts = ();
getopts('f:o:r:', \%opts);
my $file = $opts{'f'};
my $router = $opts{'r'};
my $output = $opts{'o'};
open PASSFILE, "</home/bin/secure/pass" or die $!;
my $password = <PASSFILE>;
chomp $password;
close PASSFILE;
$password =~ /^\s*([^:]+)\:([^:]+)\s*$/;
my $USERNAME = $1;
my $PASSWORD = $2;
my $t = new Net::Telnet (Timeout=>600,Errmode=>'return');
   $t->max_buffer_length(100000000);
   $t->open($router);
   $t->waitfor('/Telnet password[: ]*/i');
   $t->print("$PASSWORD\n");
   $t->waitfor('/.*\>*/');
   $t->print("enable\n");
   $t->waitfor('/password[: ]*$/i');
   $t->print("$PASSWORD\n");
   $t->waitfor('/.*\#$/');
   $t->print("term length 0\n");
   $t->waitfor('/.*\#$/');
  open CMDS,"<$file" or die $!;
    foreach my $line (<CMDS>) {
     chomp($line);
         $t->print("$line\n");
           my @config = $t->waitfor('/.*\#$/');
           open OUT,">>$output" or die $!;
           foreach my $config (@config) {
           print OUT "$config";
           }
           close OUT;
   }
   close CMDS;
   $t->close;

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl telnet to cisco router and compare the ping ms

All Please help, i will telnet to router to obain the ping status and compare, if higher than normal latency, i will have further action.. if i do the telent and in perl script then .... e.g the result i obtain from the router will be =' Success rate is 100 percent (5/5), round-trip... (4 Replies)
Discussion started by: optimus
4 Replies

2. Shell Programming and Scripting

Script to run on a router

I want to make a Perl script to telnet to a router and apply commands, and get the output of the commands in a file. Can any one help me in that? (2 Replies)
Discussion started by: moutaz1983
2 Replies

3. Shell Programming and Scripting

Webpage to Telnet via Perl and Expect: Telnet problem?

Somewhat long story: I have a simple Perl CGI script that uses Expect to Telnet to a device and grab some data, and then spits it back to Perl for display on the Webpage. This works for many devices I've tried, but one device just fails, it keeps rejecting the password on this device, only... (1 Reply)
Discussion started by: jondo
1 Replies

4. UNIX for Dummies Questions & Answers

Command to run multiple commands from a file.

I need a command, which could run mutliple commands from a file. Let's say, I have mv fileA1 fileB1 mv fileA2 fileB2 ..... mv fileA20 fileB20 I put these commands in a file, then I need a command to run the file as a whole so that I don't need to type 20 times... Anyone tell me how to... (8 Replies)
Discussion started by: kaixinsjtu
8 Replies

5. UNIX for Dummies Questions & Answers

check for a file and run some commands

Hi all, Can you guys please help me with this... I am on AIX and need to prepare a script which will 1. check for a file named do_backup in the current file system 2. If the file exists i need to run some commands and exit, if the file doesn't exist then sleep for 15 mins and try... (2 Replies)
Discussion started by: family_guy
2 Replies

6. Shell Programming and Scripting

Telnet to router and execute command

I am trying to write a shell script to execute some commands.. telnet <IP address of the router> wait 10 echo "username" echo "password" sh log exit but i am unable to execute it properly ..please help me .. thanks in advance Sri (1 Reply)
Discussion started by: srikanthus2002
1 Replies

7. Shell Programming and Scripting

Perl: connect to network devices, run set of commands

I am trying to write a script for my own use that will allow me to connect to network devices, then run a set of commands. I start with a list of ips in a text file. Each ip is on its own line. I start with a second file of commands. Each command on one line. for illustration .. the cmd.txt... (2 Replies)
Discussion started by: popeye
2 Replies

8. Linux

How to run commands with pipe from text file?

Hello, I have standard loop while read -r info; do command $info done < info in info text file I have multiple commands each on line that I want to execute. When I used them in console they worked, but not with this loop. This is one of the commands in info file: grep... (4 Replies)
Discussion started by: adamlevine
4 Replies

9. Shell Programming and Scripting

Shell script run in a case statement call to run a php file, also Perl

Linux System having all Perl, Python, PHP (and Ruby) installed From a Shell script, can call a Perl, Python, PHP (or Ruby ?) file eg eg a Shell script run in a case statement call to run a php file, also Perl or/and Python file??? Like #!/usr/bin/bash .... .... case $INPUT_STRING... (1 Reply)
Discussion started by: hoyanet
1 Replies

10. UNIX for Beginners Questions & Answers

Script require to do telnet & run few commands

I am new in scripting, I need script(BASH) which do telenet to one of the elements & run few commands , after running it successfully it will check status of files & exit. Help is greatly appreciated 🙏 (2 Replies)
Discussion started by: Vinesh_123
2 Replies
Info::Layer3::Microsoft(3pm)				User Contributed Perl Documentation			      Info::Layer3::Microsoft(3pm)

NAME
SNMP::Info::Layer3::Microsoft - SNMP Interface to L3 Microsoft Windows router AUTHOR
begemot SYNOPSIS
# Let SNMP::Info determine the correct subclass for you. my $router = new SNMP::Info( AutoSpecify => 1, Debug => 1, DestHost => 'myrouter', Community => 'public', Version => 1 ) or die "Can't connect to DestHost. "; my $class = $router->class(); print "SNMP::Info determined this device to fall under subclass : $class "; DESCRIPTION
Subclass for Generic Microsoft Routers running Microsoft Windows OS Inherited Classes SNMP::Info::Layer3 Required MIBs Inherited Classes' MIBs See "Required MIBs" in SNMP::Info::Layer3 for its own MIB requirements. GLOBALS
These are methods that return scalar value from SNMP Overrides $router->vendor() Returns 'microsoft' $router->os() Returns 'windows' $router->os_ver() Returns '' $router->model() Returns 'Windows Router' $router->serial() Returns '' Globals imported from SNMP::Info::Layer3 See documentation in "GLOBALS" in SNMP::Info::Layer3 for details. TABLE METHODS
These are methods that return tables of information in the form of a reference to a hash. Overrides $router->interfaces() Map the Interfaces to their physical names. Adds interface number to interface name because identical interface cards return identical "ifDescr". Table Methods imported from SNMP::Info::Layer3 See documentation in "TABLE METHODS" in SNMP::Info::Layer3 for details. perl v5.12.4 2011-09-28 Info::Layer3::Microsoft(3pm)
All times are GMT -4. The time now is 02:03 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy