my $router = new Net::Telnet::Cisco(Host => $ip); my @output = $router->cmd("sh users"); print @output; #### $router->cmd("terminal length 0"); #### $router->cmd("terminal length 0"); $router->cmd("terminal length 0"); my @output = $router->cmd("sh users"); print @output; #### foreach my $server (@SERVERS) { my ($sname,$sdom); if($server =~ /^([^.]+)(.+)/) { $sname = $1; $sdom = $2; $sdom =~ s/\./\\\./g; } print "\n\n---> Trying $server .... "; socket(ROUTER,AF_INET,SOCK_STREAM,getprotobyname('tcp')); my $sin = sockaddr_in(23,inet_aton($server)); connect(ROUTER,$sin); # or die "$server needs a kick!\n"; print "Connected.\n"; bind(ROUTER,$sin); # below insight provided by Net::Telnet.pm select((select(ROUTER), $|=1)[$[]); #don't buffer writes # end insight. send(ROUTER, "\n", ''); #doing to get a prompt, establish connection my $task= scalar @CMDS; my $line=""; my $get_output=0; my $i=0; my %OUT=(); while(recv(ROUTER,$line,$LENGTH,'')) { local $_ = lc($line); if(/^$sname($sdom)?\>/) { #we have a prompt if(!$task) { #we're done! send(ROUTER, $close, ''); last; } else { send(ROUTER, $CMDS[$i], ''); $i++; $task--; $get_output=1; next; } } elsif($get_output) { #we're between two prompts and interested in the output push @{ $OUT{$CMDS[$i-1]} }, $line; print $line; } } close ROUTER; }