2010-06-22 12 views
24

Zainstalowałem i napisałem następujący Paramiko, który nie może umieścić pliku. Łatwo jest uzyskać "plik" i wykonać polecenie "ls"."Put" w SFTP przy użyciu 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() 

Używając polecenia 'włożyć' daje następujący błąd & ślad stosu -

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 

Jak mogę rozwiązać ten?

Odpowiedz

51

Rozwiązanie wydawało mi się bardzo zabawne!

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

Wystarczy zmodyfikować ścieżkę docelową, aby dołączyć również nazwę pliku. Nie spodziewałem się takiego błędu pochodzącego z pakietu Pythona.

+0

mógłbyś może łata paramiko w tym względzie;) czyli więc rozumie foldery docelowe. okrzyki – nuts

0

ten występuje również w wersji 2.0.2 przy próbie 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 

To był mój Python 2.7.9 fix:

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