'Put' in SFTP using PAramiko

匿名 (未验证) 提交于 2019-12-03 02:15:02

问题:

I've installed and written the following Paramiko which is unable to put the file. It is easily able to 'get' a file and execute 'ls' commands on it.

#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() 

Using a 'put' command gives the following error & stack trace -

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 

How do I overcome this?

回答1:

The solution seemed very funny to me!

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

Just modified the destination path to include the file name as well. Didn't expect some error like this coming from a Python package.



回答2:

This also occurs in 2.0.2 when you try to sftp.mkdir('/exists'):

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 

This was my Python 2.7.9 fix:

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!