2014-09-12 5 views
1

paramiko를 사용하여 sftp를 통해 파일을 서버에 업로드하려고합니다.Paramiko가 연결되지 않았습니다.

def send_file(server_, port_, user_, passwd_, file_, dir_): 
    """ 
    :return: 
    """ 
    try: 
     transport = paramiko.Transport((server_, int(port_))) 
     transport.connect(username=user_, password=passwd_) 
     sftp = paramiko.SFTPClient.from_transport(transport) 
     sftp.put(file_, dir_) 
     sftp.close() 
    except RuntimeError, err: 
     print(str(err)) 

이 함수를 실행하면 소켓 시간이 초과 될 때까지 응답이없고 응답도 없습니다.

자격 증명이 정확합니다. 동일한 컴퓨터와 동일한 네트워크에서 sftp 및 ssh 클라이언트로 시도했습니다. 또한 트랜스 포트를 통과하고 직접 값을 연결합니다. 변경하지 않았습니다. 이 기능을 사용하면 server_의 로그에 아무런 연결이 표시되지 않습니다. 호스트 키가 known_hosts 파일에 있습니다.

try 블록의 첫 번째 문이 성공합니다 (포트 _에 int 대신 문자열을 전달하면 예외가 발생 함) 두 번째 줄에 문제가있는 것 같습니다.

여기에 문제가 있습니까?

미리 감사드립니다.

UPDATE 1 :

나는 ipython2이를 시도하고 작동합니다. ssh.open_sftp를 사용하여, 당신은 SFTP를 통해 보낼 수 있습니다

def onUpload(self): 
    file_, ok = QtGui.QInputDialog.getText(self, 'Input Dialog', 'Datei inklusive Pfad angeben: ') 
    server_, port_, user_, passwd_, dir_ = ftpmod.read_config() 
    ftpmod.send_file(server_, port_, user_, passwd_, file_, dir_) 
+0

최신 업데이트 : 2014-08- 25. 그래서 : 아니. – Steffen

+0

paramiko의 버그 (?) 인 것 같습니다. [this] [1] and [this] [2] question. [1] : http://stackoverflow.com/questions/443387/why-does-paramiko-hang-if-you-use-it-while-loading-a-module/450895#450895 [2] : http://stackoverflow.com/questions/13155890/paramiko-hanging-during-authentication-when-runned-by-dint-of-unittest-runner?lq=1 – Steffen

+0

링크 [2]을 (를) 읽으십시오. 그것은 여전히 ​​12에 있었고 문제는 똑같습니다. connect() 스레드의 잠금입니다. 그래서, 다시 : 아니. – Steffen

답변

0

:이 기능은 위의 PyQt는 프로그램이며

self.connect(self.b_upload, QtCore.SIGNAL("clicked()"), self.onUpload) 

기능 onUpload 통해 실행

import paramiko 
ssh = paramiko.SSHClient() 
ssh.set_missing_host_key_policy(
    paramiko.AutoAddPolicy()) 
ssh.connect(host, username, password) 
ftp = ssh.open_sftp() 
ftp.put(localpath, remotepath) 
ftp.close() 
+0

나는 또한 같은 효과를 시도했다. – Steffen

+0

ipython2에서이 코드를 사용해 보았는데 ... – Steffen

+0

... 작동 여부는?) 시스템 host_keys를로드 할 수도 있습니다.'ssh.load_system_host_keys()' –

관련 문제