2015-04-21 7 views
5

Ich versuche, einige Dateien aus meinem lokalen Windows-Verzeichnis in Remote-Linux-Verzeichnis zu kopieren.Paramiko Fehler: Größe stimmt nicht überein Put

Es funktioniert für Datei mit der gleichen Art von Erweiterung. Aber bricht, wenn es verschiedene Erweiterungen in einem Ordner gibt.

Der Code:

import os 
import glob 
import paramiko 
glob_pattern='*.*' 
try: 
    ssh.connect(host,username=user,password=pwd) 
    ftp = ssh.open_sftp() 

    try: 
     ftp.mkdir(dir_remote) 
     command=dir_remote+'/setuplog' 
     ftp.mkdir(command) 
     commande=dir_remote+'/emsfolder' 
     ftp.mkdir(commande) 

     try: 
      for fname in glob.glob(uploadfolder + os.sep + glob_pattern): 
       local_file = os.path.join(uploadfolder, fname) 
       remote_file = dir_remote + '/' + os.path.basename(local_file) 
       ftp.put(local_file,remote_file) 
       ftp.chmod(remote_file ,0777) 
     except IOError, e: 
      print (e) 


    except IOError, e: 
      print (e) 


except paramiko.AuthenticationException, ae: 
    print (ae) 
finally: 
    ssh.close() 

Ich habe versucht, nur zwei Dateien zu übertragen (1.sh und 2.pl). Während 1.sh eine 0 Byte 2.pl Datei kopiert wurde an dem Remote-Server erstellt und dann bekomme ich den Fehler:

size mismatch in put! 0 != 2200 

Ich verwende:

python 2.7, Paramiko - 1.15.2 

Bitte helfen.

+1

verwenden Haben Sie es lösen? Ich habe ein ähnliches Problem, wenn Dateien mit verschiedenen Erweiterungen kopiert werden. –

Antwort

6

Ich bezweifle, dass dies mit verschiedenen Erweiterungen in einem Ordner zu tun hat. Der Code in paramiko der sftp_client.py:putfo() liest am Ende:

s = self.stat(remotepath) 
    if s.st_size != size: 
     raise IOError('size mismatch in put! %d != %d' % (s.st_size, size)) 

Ich hatte ein ähnliches Problem und es stellte sich heraus, dass der Remote-Dateisystem voll war und somit paramiko die Datei nicht schreiben konnte/setzen.

BTW, statt uploadfolder + os.sep + glob_pattern (und ähnliche) können Sie os.path.join(uploadfolder, glob_pattern)

Verwandte Themen