Author: arkurth
Date: Thu Jan  2 19:01:19 2014
New Revision: 1554878

URL: http://svn.apache.org/r1554878
Log:
VCL-473
Updated utils.pm::run_ssh_command to strip out SSH warning text if the 
permissions are incorrect on any of the identity keys attempted. Also added 
check to run_scp_command to prevent the subroutine from returning false even 
though it was successful if a missing key is attempted.

Modified:
    vcl/trunk/managementnode/lib/VCL/utils.pm

Modified: vcl/trunk/managementnode/lib/VCL/utils.pm
URL: 
http://svn.apache.org/viewvc/vcl/trunk/managementnode/lib/VCL/utils.pm?rev=1554878&r1=1554877&r2=1554878&view=diff
==============================================================================
--- vcl/trunk/managementnode/lib/VCL/utils.pm (original)
+++ vcl/trunk/managementnode/lib/VCL/utils.pm Thu Jan  2 19:01:19 2014
@@ -4037,7 +4037,17 @@ sub run_ssh_command {
        # -p <port>, Port to connect to on the remote host.
        # -x, Disables X11 forwarding.
        # Dont use: -q, Quiet mode.  Causes all warning and diagnostic messages 
to be suppressed.
-       my $ssh_command = "$ssh_path $identity_paths -o 
StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o 
ConnectionAttempts=1 -o ConnectTimeout=3 -l $user -p $port -x $node '$command' 
2>&1";
+       my $ssh_command = "$ssh_path $identity_paths ";
+       $ssh_command .= "-o StrictHostKeyChecking=no ";
+       $ssh_command .= "-o UserKnownHostsFile=/dev/null ";
+       $ssh_command .= "-o ConnectionAttempts=1 ";
+       $ssh_command .= "-o ConnectTimeout=3 ";
+       $ssh_command .= "-o BatchMode=no ";
+       $ssh_command .= "-o PasswordAuthentication=no ";
+       $ssh_command .= "-l $user ";
+       $ssh_command .= "-p $port ";
+       $ssh_command .= "-x ";
+       $ssh_command .= "$node '$command' 2>&1";
        
        # Execute the command
        my $ssh_output = '';
@@ -4133,10 +4143,12 @@ sub run_ssh_command {
                #    Offending key for IP in /root/.ssh/known_hosts:264
                #    Matching host key in /root/.ssh/known_hosts:3977
                #    Address x.x.x.x maps to y.y.org, but this does not map 
back to the address - POSSIBLE BREAK-IN ATTEMPT!
-               $ssh_output =~ s/^Warning:.*//ig;
+               $ssh_output =~ s/^(Warning:.*[\r\n]+)+//ig;
                $ssh_output =~ s/Offending key.*//ig;
                $ssh_output =~ s/Matching host key in.*//ig;
                $ssh_output =~ s/.*POSSIBLE BREAK-IN ATTEMPT.*//ig;
+               $ssh_output =~ s/.*ssh-askpass:[^\n]*//igs;
+               $ssh_output =~ s/.*bad permissions:[^\n]*//igs;
                
                # Remove any spaces from the beginning and end of the output
                $ssh_output =~ s/(^\s+)|(\s+$)//g;
@@ -4344,8 +4356,10 @@ sub run_scp_command {
                }
                
                # Check the output for known error messages
-               if ($scp_output =~ /permission denied|no such file|ambiguous 
target|is a directory|not known|no space/i) {
-                       notify($ERRORS{'WARNING'}, 0, "failed to copy via SCP: 
'$path1' --> '$path2'\ncommand: $scp_command\noutput:\n$scp_output");
+               # Be careful with "no such file" warnings, this may be 
displayed if the copy was successful but there is a problem with an identity 
key:
+               #    Warning: Identity file /etc/vcl/bad.key not accessible: No 
such file or directory.
+               if ($scp_exit_status != 0 && $scp_output =~ /permission 
denied|no such file|ambiguous target|is a directory|not known|no space/i) {
+                       notify($ERRORS{'WARNING'}, 0, "failed to copy via SCP: 
'$path1' --> '$path2'\nexit status: $scp_exit_status\ncommand: 
$scp_command\noutput:\n$scp_output");
                        return 0;
                }
                elsif ($scp_output =~ /^(scp|ssh):/i) {


Reply via email to