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





Reply via email to