帕拉米科没有连接

时间:2014-09-12 06:15:23

标签: python paramiko

我尝试使用paramiko通过sftp将文件上传到服务器。

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-block中的第一个语句成功(我将一个字符串而不是int传递给port_,这会引发异常),第二行似乎有问题。

这里有什么问题?

提前致谢!

更新1:

我在ipython2中试过这个并且它有效。上面的函数在PyQt程序中,并通过

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

功能onUpload:

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_)

1 个答案:

答案 0 :(得分:0)

您可以使用ssh.open_sftp

通过sftp发送
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()