You're not downloading anything in this case, you're simply printing to your local console the output of a remote device (a Cisco network device, apparently). I've reformatted your code below (so it's easier to read/follow), and added a couple of things that will write your output to a file named "output.txt". Note that this code is untested:
use strict;
use warnings;
use Net::Ping;
use Net::SSH2;
my $output_file = 'output.txt';
my $ssh = Net::SSH2->new();
my $username="username";
my $password="password";
my $ip_address = ("ipadderss");
my $ping= Net::Ping->new();
if($ping->ping($ip_address)){
if($ssh->connect($ip_address)){
if($ssh->auth_password($username,$password)){
my $chan = $ssh->channel();
$chan->blocking(1);
$chan->shell();
$chan->write("terminal length 0\n");
$chan->write("show cdp neighbor \n");
# open the output file in overwrite mode
# (use '>>' if you want to append instead)
open my $wfh, '>', $output_file or die $!;
while (<$chan>) {
# instead of printing to the console, print
# to the file handle instead
print $wfh $_ if /\bterminal length\b/i .. /^\n*$/ ;
}
}
else {
print "auth failed";
}
}
}
else {
print "not pinging";
}
update: added the default var after the print to the file handle, per Re^3: download as txt and pdf.