Comment #3 on issue 55 by [email protected]: SSHLibrary put_file and
get_file does not work if filename contains URL encoding
http://code.google.com/p/robotframework-sshlibrary/issues/detail?id=55
our test code:
import SSHLibrary
import paramiko
import logging
#paramiko.common.logging.basicConfig(level=logging.DEBUG)
ssh = SSHLibrary.SSHLibrary()
ssh.open_connection("10.9.154.178")
ssh.login("xxx", "xxxx")
#ssh._client.client._transport.logger.manager.disable=logging.CRITICAL
logger = paramiko.util.logging.getLogger()
logger.setLevel(logging.CRITICAL)
try:
ssh.put_file("an_PLMN-PLMN%2FRNC-1%2FWBTS-55_12345.xml", "/tmp/")
finally:
ssh.close_all_connections()
print "upload successful"
yes. "logger.setLevel(logging.CRITICAL)" can work. actually the error
happened in logging module.
below is "log" method in logging module
def log(self, level, msg, *args, **kwargs):
if not isinstance(level, int):
if raiseExceptions:
raise TypeError("level must be an integer")
else:
return
if self.isEnabledFor(level):
self._log(level, msg, args, **kwargs)
"logger.setLevel(logging.CRITICAL)" can let self.isEnabledFor(level) return
false, so we can disable "_log" to be executed.
ssh._client.client._transport.logger.manager.disable=logging.CRITICAL" can
work also.
actually put of get file function is ok on some laptops, although "_log" is
also executed, seems that error is catched:
*INFO* Putting 'an_PLMN-PLMN%2FRNC-1%2FWBTS-55_12345.xml'
to '/tmp/an_PLMN-PLMN%2FRNC-1%2FWBTS-55_12345.xml'
Traceback (most recent call last):
File "c:\python27\lib\logging\__init__.py", line 844, in emit
msg = self.format(record)
File "c:\python27\lib\logging\__init__.py", line 721, in format
return fmt.format(record)
File "c:\python27\lib\logging\__init__.py", line 466, in format
record.message = record.getMessage()
File "c:\python27\lib\logging\__init__.py", line 330, in getMessage
msg = msg % self.args
TypeError: not enough arguments for format string
Logged from file sftp.py, line 132
Traceback (most recent call last):
File "c:\python27\lib\logging\__init__.py", line 844, in emit
msg = self.format(record)
File "c:\python27\lib\logging\__init__.py", line 721, in format
return fmt.format(record)
File "c:\python27\lib\logging\__init__.py", line 466, in format
record.message = record.getMessage()
File "c:\python27\lib\logging\__init__.py", line 330, in getMessage
msg = msg % self.args
TypeError: not enough arguments for format string
Logged from file sftp.py, line 132
Traceback (most recent call last):
File "c:\python27\lib\logging\__init__.py", line 844, in emit
msg = self.format(record)
File "c:\python27\lib\logging\__init__.py", line 721, in format
return fmt.format(record)
File "c:\python27\lib\logging\__init__.py", line 466, in format
record.message = record.getMessage()
File "c:\python27\lib\logging\__init__.py", line 330, in getMessage
msg = msg % self.args
TypeError: not enough arguments for format string
Logged from file sftp.py, line 132
DEBUG:paramiko.transport.sftp:[chan 2] close(00000000)
INFO:paramiko.transport.sftp:[chan 2] sftp session closed.
DEBUG:paramiko.transport:[chan 2] EOF sent (2)
DEBUG:paramiko.transport:EOF in transport thread
upload successful