【问题标题】:'put' in SFTP using Paramiko使用 Paramiko 在 SFTP 中“放入”
【发布时间】:2011-03-06 16:49:30
【问题描述】:

我已经安装并编写了以下无法放置文件的 Paramiko。它很容易“获取”一个文件并对其执行ls 命令。

#set username & password
username='runaway'
password='runaway'
port=22
source= '/Unzip.sh' 
destination ='/var/mpx/www/http'


#SFTP
client.load_system_host_keys()
print " hostname =%s \n username=%s \n password=%s \n" (hostname,username,password)
t = paramiko.Transport((hostname, port)) 
t.connect(username=username,password=password)
sftp = paramiko.SFTPClient.from_transport(t)
sftp.put(source,destination)
#sftp.close()
#t.close()

使用“put”命令会出现以下错误和堆栈跟踪 -

File "upload_file.py", line 84, in ?
    sftp.put(source,destination)
  File "/usr/lib/python2.4/site-packages/paramiko/sftp_client.py", line 522, in put
    fr = self.file(remotepath, 'wb')
  File "/usr/lib/python2.4/site-packages/paramiko/sftp_client.py", line 221, in open
    t, msg = self._request(CMD_OPEN, filename, imode, attrblock)
  File "/usr/lib/python2.4/site-packages/paramiko/sftp_client.py", line 572, in _request
    return self._read_response(num)
  File "/usr/lib/python2.4/site-packages/paramiko/sftp_client.py", line 619, in _read_response
    self._convert_status(msg)
  File "/usr/lib/python2.4/site-packages/paramiko/sftp_client.py", line 649, in _convert_status
    raise IOError(text)
IOError: Failure

我该如何克服这个问题?

【问题讨论】:

    标签: python sftp paramiko


    【解决方案1】:

    我觉得这个解决方案很有趣!

    source= '/Unzip.sh' 
    destination ='/var/mpx/www/http/Unzip.sh'
    

    刚刚修改了目标路径以包含文件名。 没想到 Python 包会出现这样的错误。

    【讨论】:

    • 你可以在这方面修补 paramiko ;) 即它确实理解目标文件夹。欢呼
    【解决方案2】:

    当您尝试sftp.mkdir('/exists') 时,这也发生在 2.0.2 中:

    Traceback (most recent call last):
      ...
      File "/usr/local/lib/python2.7/site-packages/paramiko/sftp_client.py", line 380, in mkdir
        self._request(CMD_MKDIR, path, attr)
      File "/usr/local/lib/python2.7/site-packages/paramiko/sftp_client.py", line 730, in _request
        return self._read_response(num)
      File "/usr/local/lib/python2.7/site-packages/paramiko/sftp_client.py", line 781, in _read_response
        self._convert_status(msg)
      File "/usr/local/lib/python2.7/site-packages/paramiko/sftp_client.py", line 811, in _convert_status
        raise IOError(text)
    IOError: Failure
    

    这是我的 Python 2.7.9 修复:

    try:
        sftp.mkdir(remote_dir)
    except IOError:
        logging.debug('%s already exists.', remote_dir)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      • 2015-10-16
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      相关资源
      最近更新 更多