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)
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
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, '')
"""
chan.close()
- def scp(self, local_path, remote_path, get=False):
+ def scp(self, local_path, remote_path, get=False, timeout=10):
"""Copy files from local_path to remote_path or vice versa.
connect() method has to be called first!
:param remote_path: Remote path where to place uploaded file; or
path to remote file which should be downloaded.
:param get: scp operation to perform. Default is put.
+ :param timeout: Timeout value in seconds.
:type local_path: str
:type remote_path: str
:type get: bool
+ :type timeout: int
"""
if not get:
logger.trace('SCP {0} to {1}:{2}'.format(
self._ssh.get_transport().getpeername(), remote_path,
local_path))
# SCPCLient takes a paramiko transport as its only argument
- scp = SCPClient(self._ssh.get_transport(), socket_timeout=10)
+ scp = SCPClient(self._ssh.get_transport(), socket_timeout=timeout)
start = time()
if not get:
scp.put(local_path, remote_path)