X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2Fssh.py;h=7fa10bcb5150ef24155f0aa89a2326c0729e2f28;hb=73a01b1a7fc836c964627eea2c08106df0da5aee;hp=5777c3200109906c971f8e0ee929373d3b6e5b4e;hpb=fcee621dda66ed8b218158c36afbf07bd08b23a1;p=csit.git diff --git a/resources/libraries/python/ssh.py b/resources/libraries/python/ssh.py index 5777c32001..7fa10bcb51 100644 --- a/resources/libraries/python/ssh.py +++ b/resources/libraries/python/ssh.py @@ -132,7 +132,6 @@ class SSH(object): :rtype: tuple(int, str, str) :raise SSHTimeout: If command is not finished in timeout time. """ - start = time() stdout = StringIO.StringIO() stderr = StringIO.StringIO() try: @@ -147,6 +146,7 @@ class SSH(object): logger.trace('exec_command on {0}: {1}' .format(self._ssh.get_transport().getpeername(), cmd)) + start = time() chan.exec_command(cmd) while not chan.exit_status_ready() and timeout is not None: if chan.recv_ready(): @@ -157,10 +157,10 @@ class SSH(object): if time() - start > timeout: raise SSHTimeout( - 'Timeout exception.\n' - 'Current contents of stdout buffer: {0}\n' - 'Current contents of stderr buffer: {1}\n' - .format(stdout.getvalue(), stderr.getvalue()) + 'Timeout exception during execution of command: {0}\n' + 'Current contents of stdout buffer: {1}\n' + 'Current contents of stderr buffer: {2}\n' + .format(cmd, stdout.getvalue(), stderr.getvalue()) ) sleep(0.1) @@ -176,8 +176,6 @@ class SSH(object): logger.trace('exec_command on {0} took {1} seconds'.format( self._ssh.get_transport().getpeername(), end-start)) - logger.trace('chan_recv/_stderr took {} seconds'.format(time()-end)) - logger.trace('return RC {}'.format(return_code)) logger.trace('return STDOUT {}'.format(stdout.getvalue())) logger.trace('return STDERR {}'.format(stderr.getvalue())) @@ -250,7 +248,7 @@ class SSH(object): chan.set_combine_stderr(True) buf = '' - while not buf.endswith((":~$ ", "~]$ ")): + while not buf.endswith((":~$ ", "~]$ ", "~]# ")): try: chunk = chan.recv(self.__MAX_RECV_BUF) if not chunk: @@ -260,6 +258,7 @@ class SSH(object): logger.error('Channel exit status ready') break except socket.timeout: + logger.error('Socket timeout: {0}'.format(buf)) raise Exception('Socket timeout: {0}'.format(buf)) return chan @@ -293,7 +292,10 @@ class SSH(object): logger.error('Channel exit status ready') break except socket.timeout: - raise Exception('Socket timeout: {0}'.format(buf)) + logger.error('Socket timeout during execution of command: ' + '{0}\nBuffer content:\n{1}'.format(cmd, buf)) + raise Exception('Socket timeout during execution of command: ' + '{0}\nBuffer content:\n{1}'.format(cmd, buf)) tmp = buf.replace(cmd.replace('\n', ''), '') for item in prompt: tmp.replace(item, '')