2010-06-22 37 views
24

Tôi đã cài đặt và viết Paramiko sau đây không thể đặt tệp. Nó có thể dễ dàng 'có được' một tập tin và thực thi lệnh 'ls' trên nó.'Đặt' trong SFTP bằng PAramiko

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

Sử dụng một lệnh 'đặt' cung cấp cho các lỗi & stack trace sau -

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 

Làm thế nào để khắc phục điều này?

Trả lời

51

Giải pháp dường như rất buồn cười đối với tôi!

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

Chỉ cần sửa đổi đường dẫn đích để bao gồm tên tệp. Không mong đợi một số lỗi như thế này đến từ một gói Python.

+0

bạn có thể có thể vá paramiko trong đó tôn trọng;) tức là do đó, nó không hiểu thư mục đích. cổ vũ – nuts

0

này cũng xảy ra ở 2.0.2 khi bạn cố gắng 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 

Đây là tôi sửa chữa Python 2.7.9:

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