2015-04-08 8 views
6

Próbuję utworzyć skrypt, który pobiera pliki (lub przesyła je) przez ssh, ponieważ port ftp jest wyłączony z zapory. To jest mój skrypt:Pobieranie plików przez SSH przy użyciu Pythona

import os 
import paramiko 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect('10.170.21.93', username="abhishek", password="@bhishek$") 
sftp = ssh.open_sftp() 
localpath = 'abc.txt' 
remotepath = '/opt/crestelsetup/patchzip' 
sftp.put(localpath, remotepath) 
sftp.close() 
ssh.close() 

To daje mi "IOError: Failure", czy ktoś może pomóc?

+0

możliwe powielać http://stackoverflow.com/questions/3091326/put-in-sftp-using-paramiko – jester112358

+0

Duplikat post nie ma skrypt działa. –

+0

Nie, ale ma ten sam błąd, co Ty i Akceptowana odpowiedź jako rozwiązanie problemu. – jester112358

Odpowiedz

4

Trzeba wyraźnie określić zdalną ścieżkę:

import os 
import paramiko 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
ssh.connect('10.170.21.93', username="abhishek", password="@bhishek$") 
sftp = ssh.open_sftp() 
localpath = 'abc.txt' 
remotepath = '/opt/crestelsetup/patchzip/abc.txt' 
sftp.put(localpath, remotepath) 
sftp.close() 
ssh.close() 
+0

Proszę nie sugerować, aby ludzie używali 'AutoAddPolicy', nie wyjaśniając konsekwencji! Tracisz ochronę przed [atakami typu Man-in-the-middle] (https://en.wikipedia.org/wiki/Man-in-the-middle_attack)! +1 i tak –

1

Wystarczy zmodyfikowaną ścieżkę docelową zawierać nazwę pliku jako well.Try zmiany.

remotepath = '/opt/crestelsetup/patchzip' 

do

remotepath = '/opt/crestelsetup/patchzip/abc.txt'