Code Review
/
csit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
add new topology parameter: arch
[csit.git]
/
resources
/
libraries
/
python
/
ssh.py
diff --git
a/resources/libraries/python/ssh.py
b/resources/libraries/python/ssh.py
index
ca6d655
..
11b0583
100644
(file)
--- a/
resources/libraries/python/ssh.py
+++ b/
resources/libraries/python/ssh.py
@@
-157,10
+157,10
@@
class SSH(object):
if time() - start > timeout:
raise SSHTimeout(
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)
)
sleep(0.1)
@@
-250,7
+250,7
@@
class SSH(object):
chan.set_combine_stderr(True)
buf = ''
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:
try:
chunk = chan.recv(self.__MAX_RECV_BUF)
if not chunk:
@@
-260,6
+260,7
@@
class SSH(object):
logger.error('Channel exit status ready')
break
except socket.timeout:
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
raise Exception('Socket timeout: {0}'.format(buf))
return chan
@@
-293,7
+294,10
@@
class SSH(object):
logger.error('Channel exit status ready')
break
except socket.timeout:
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, '')
tmp = buf.replace(cmd.replace('\n', ''), '')
for item in prompt:
tmp.replace(item, '')
@@
-307,7
+311,7
@@
class SSH(object):
"""
chan.close()
"""
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!
"""Copy files from local_path to remote_path or vice versa.
connect() method has to be called first!
@@
-317,9
+321,11
@@
class SSH(object):
: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 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 local_path: str
:type remote_path: str
:type get: bool
+ :type timeout: int
"""
if not get:
logger.trace('SCP {0} to {1}:{2}'.format(
"""
if not get:
logger.trace('SCP {0} to {1}:{2}'.format(
@@
-330,7
+336,7
@@
class SSH(object):
self._ssh.get_transport().getpeername(), remote_path,
local_path))
# SCPCLient takes a paramiko transport as its only argument
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)
start = time()
if not get:
scp.put(local_path, remote_path)