diff --git a/ffdc/ffdc_collector.py b/ffdc/ffdc_collector.py
index 3aab8d0..f196e0d 100644
--- a/ffdc/ffdc_collector.py
+++ b/ffdc/ffdc_collector.py
@@ -463,7 +463,7 @@
         form_filename                    if true, pre-pend self.target_type to filename
         """
 
-        # Executing commands, , if any
+        # Executing commands, if any
         self.ssh_execute_ffdc_commands(ffdc_actions_for_machine_type,
                                        form_filename)
 
@@ -548,7 +548,13 @@
             if form_filename:
                 command_txt = str(command_txt % self.target_type)
 
-            err, response = self.ssh_remoteclient.execute_command(command_txt, command_timeout)
+            cmd_exit_code, err, response = \
+                self.ssh_remoteclient.execute_command(command_txt, command_timeout)
+
+            if cmd_exit_code:
+                self.logger.warning(
+                    "\n\t\t[WARN] %s exits with code %s." % (command_txt, str(cmd_exit_code)))
+                self.logger.warning("\t\t[WARN] %s " % err)
 
             progress_counter += 1
             self.print_progress(progress_counter)
@@ -579,8 +585,11 @@
                     self.logger.info("\t\tInvalid command %s for DUMP_LOGS block." % command)
                     continue
 
-                err, response = self.ssh_remoteclient.execute_command(command)
+                cmd_exit_code, err, response = \
+                    self.ssh_remoteclient.execute_command(command)
 
+                # If file does not exist, code take no action.
+                # cmd_exit_code is ignored for this scenario.
                 if response:
                     scp_result = self.ssh_remoteclient.scp_file_from_remote(filename, self.ffdc_dir_path)
                     if scp_result:
diff --git a/ffdc/ffdc_config.yaml b/ffdc/ffdc_config.yaml
index 45697d8..93ffae2 100644
--- a/ffdc/ffdc_config.yaml
+++ b/ffdc/ffdc_config.yaml
@@ -173,7 +173,7 @@
             - 'tail -n 200000 /var/log/syslog >/tmp/OS_syslog.txt 2>&1'
             - '{ uname -a; dpkg -s opal-prd; dpkg -s ipmitool ; } >/tmp/OS_info.txt 2>&1'
             - 'rm -rf /tmp/sosreport*FFDC*'
-            - {'sosreport --batch --tmp-dir /tmp --ticket-number FFDC >/tmp/OS_sosreport.txt 2>&1': 1200}
+            - {'sosreport --batch --tmp-dir /tmp --ticket-number FFDC >/tmp/OS_sosreport.txt': 1200}
         FILES:
             - '/tmp/OS_isub.txt'
             - '/tmp/OS_kern.txt'
diff --git a/ffdc/ssh_utility.py b/ffdc/ssh_utility.py
index a8c1253..f363e82 100644
--- a/ffdc/ssh_utility.py
+++ b/ffdc/ssh_utility.py
@@ -73,7 +73,8 @@
         if self.scpclient:
             self.scpclient.close()
 
-    def execute_command(self, command, default_timeout=60):
+    def execute_command(self, command,
+                        default_timeout=60):
         """
         Execute command on the remote host.
 
@@ -92,8 +93,8 @@
                 if stdout.channel.exit_status_ready():
                     break
                 time.sleep(1)
-
-            return stderr.readlines(), stdout.readlines()
+            cmd_exit_code = stdout.channel.recv_exit_status()
+            return cmd_exit_code, stderr.readlines(), stdout.readlines()
 
         except (paramiko.AuthenticationException, paramiko.SSHException,
                 paramiko.ChannelException, SocketTimeout) as e:
@@ -101,7 +102,7 @@
             logging.error("\n>>>>>\tERROR: Fail remote command %s %s" % (e.__class__, e))
             logging.error(">>>>>\tCommand '%s' Elapsed Time %s" %
                           (command, time.strftime("%H:%M:%S", time.gmtime(time.time() - cmd_start))))
-            return empty, empty
+            return 0, empty, empty
 
     def scp_connection(self):
 
