我在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 ......任何想法?
答案 0 :(得分:2)
您可以使用paramiko的SFTPClient
将文件从本地服务器复制到远程服务器。
有SFTPClient的put方法,它将本地文件复制到远程服务器。
答案 1 :(得分:1)
您正在执行命令的服务器(host_name
)没有对您尝试scp到的服务器(192.168.56.32)进行正确的SSH访问,这就是它生成错误的原因{{1 (表示Host key verification failed
上known_hosts
文件中192.168.56.32的主机密钥与192.168.56.32返回的密钥不匹配。
修复主机密钥,或尝试运行scp,如下所示:
host_name
(另请注意,如果文件名包含空格,则scp命令将失败,请改用scp命令行中的scp -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -r %s ...
)。