"Put" dans SFTP en utilisant PAramiko

j'ai installé et écrit Paramiko qui est incapable de mettre le fichier. Il est facilement capable de "récupérer" un fichier et d'y exécuter des commandes "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()

L'utilisation d'une commande' put ' donne l'erreur suivante & la trace de la pile -

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

Comment puis-je surmonter cela?

25
demandé sur fixxxer 2010-06-22 12:09:34

2 réponses

la solution m'a paru très drôle!

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

vient de modifier le chemin de destination pour inclure le nom du fichier. Je ne m'attendais pas à une erreur comme celle-ci venant d'un paquet Python.

56
répondu fixxxer 2010-06-23 06:01:37

cela se produit aussi dans 2.0.2 quand vous essayez de 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

C'était mon correctif Python 2.7.9:

try:
    sftp.mkdir(remote_dir)
except IOError:
    logging.debug('%s already exists.', remote_dir)
0
répondu David Tucker 2016-08-18 21:36:37