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"; }