finally it worked without errors but i got this output
"command timed-out at C:\Users\Kumar\telnet.pl line 7"
where did i go wrong?
use strict;
use Net::Cisco;
use Net::Telnet();
my $t =Net::Telnet::Cisco->new(Host=>'10.0.0.1');
my @output=0;
$t->login('9190','KUM@R425');
$t->cmd("telnet 192.168.203.23");
$t->waitfor('/:$/i');
$t->cmd("public");
$t->waitfor('/>$/i');
@output=$t->cmd("show system");
open(CONFIG,">config.txt");
print CONFIG "@output\n";
close(CONFIG);
$t->close;
| [reply] [d/l] |
i know that the problem is at line 7
$t->cmd("telnet 192.168.203.23");
is that above statement is a right way to telnet from this? | [reply] [d/l] |
I don't think so. You get a timeout either because the connection to 192.168.203.23 is broken, or because the cmd() successfully opens a telnet connection which gets no further input.
Try print() instead of cmd() and then search ( waitfor() ) the prompts and deliver the correct responses. A combination of print("telnet ...") and login() might also work, saving you some work. Take care if you are connecting to some non-UNIX hosts (see Net::Telnet : Connecting to a Remote MS-Windows Machine).
I would attack this problem by manually logging into the first host using a telnet client (telnet or PuTTY) and then login to the
second host. While doing so, I would write down every significant prompt (username, password, etc.) and the correct response to it. That way, I would gain certainty that my approach would work in principle. Then, I have everything at hand for scripting this task.
Next step is to detect error-conditions (ill. or expired password, connectivity problems, timeouts, etc.), so your script becomes more robust.
Update (in response to 919601, 919606):
Try @output=$t->cmd('show system'); instead of @output=$t->print('show system');
If you get a timeout, use cmd() with a proper Prompt => '....' argument.
Maybe you want @output = $t->cmd(String => "show system", Prompt => '/]> /'); ?
| [reply] [d/l] [select] |