in reply to Re^2: NET::OpenSSH to execute multiple commands
in thread NET::OpenSSH to execute multiple commands

foreach $Line ( @Output || @Output2 )
You didn't replace your code with the right version specified above. Please fix it. Also, please show the error message you get (and do it every time you ask for help, see How do I post a question effectively?).
Sorry if my advice was wrong.

Replies are listed 'Best First'.
Re^4: NET::OpenSSH to execute multiple commands
by hmb104 (Sexton) on Aug 24, 2012 at 21:50 UTC
    ($Core) = &connect( $Core, $user, $pass ); @Output = $Core->capture( "show ip route $IPNumber" ) or die( ($! >> 8) ); $DEBUG && Debug_Output( @Output ); ($Core2) = &connect( $Core2, $user, $pass ); @Output2 = $Core2->capture( "show run | include hostname" ) or die( ($! >> 8) ); $DEBUG && Debug_Output( @Output2 ); foreach $Line ( @Output, @Output2) { if ( $Line =~ m/^Routing entry for / ) { @Data = split( ' ', $Line ); $Subnet = $Data[ 3 ] ; } if ( $Line2 =~ m/^hostname / ) { @Data2 = split( ' ', $Line2 ); $Rname = $Data2[ 2 ] ; last ; } } @Subnet = split( /\./, $Subnet ); $RouterIP = join( '.', $Subnet[0], $Subnet[1], $Subnet[2], '1' ); print( " Router: [$Rname]\t Router IP: [$RouterIP]\n" );

    The loop doesn't featch my Output2 array elements. This is what I get in the command line:

    bash-3.00$./test.pl 10.10.10.16 Router: [] Router IP: [10.10.10.1]

      Try changing $Line2 to $Line in the following:

      if ( $Line2 =~ m/^hostname / ) { @Data2 = split( ' ', $Line2 ); $Rname = $Data2[ 2 ] ; last ; }