如何在paramiko中使用scp命令

时间:2013-03-07 06:38:53

标签: python scp paramiko

我在paramiko python模块“find”和“scp”中使用了两个命令。 查找命令工作正常并给出正确的输出,但scp没有给出任何输出。 我尝试使用以下代码:

import paramiko

class SSH:

    def ssh_Connection(self):
        try:
            self.ssh = paramiko.SSHClient()
            self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            self.ssh.connect('host_name',username='user',password='pass')

        except Exception, e:
            print "================================================"
            print 'ERROR: Remote connection failed with %s' % e
            print "================================================"


    def ssh_Commands(self):
        try:
            stdin, stdout, stderr = self.ssh.exec_command('find /result/main/ -name "*new.txt*"')
            for line in stdout:
                a = line.strip('\n')
                print a
                if a:
                    cmd = 'scp -r %s redhat@192.168.56.32:/results/main/' % a
                    print cmd
                    stdin, stdout, stderr = self.ssh.exec_command(cmd)
                    print stdout.read()
                    print stderr.read()

            self.ssh.close()
        except Exception, e:
            print "================================================"
            print 'ERROR: Commands Execution failed with %s' % e
            print "================================================"


if __name__ == "__main__":
    a = SSH()
    a.ssh_Connection()
    a.ssh_Commands()

但是这个程序对我不起作用..

Throwing an error:
Host key verification failed.
lost connection

如何在paramiko中使用scp ......任何想法?

2 个答案:

答案 0 :(得分:2)

您可以使用paramiko的SFTPClient将文件从本地服务器复制到远程服务器。

SFTPClient的put方法,它将本地文件复制到远程服务器。

答案 1 :(得分:1)

您正在执行命令的服务器(host_name)没有对您尝试scp到的服务器(192.168.56.32)进行正确的SSH访问,这就是它生成错误的原因{{1 (表示Host key verification failedknown_hosts文件中192.168.56.32的主机密钥与192.168.56.32返回的密钥不匹配。

修复主机密钥,或尝试运行scp,如下所示:

host_name

(另请注意,如果文件名包含空格,则scp命令将失败,请改用scp命令行中的scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -r %s ... )。