python调用远程的python文件_Python-在两个远程服务器之间传输文件,执行Python脚本..._阿豪1Q97的博客-程序员宅基地

技术标签: python调用远程的python文件  

我正试图在两台服务器之间从localServer复制一个文件,例如从server-A复制到server-B。我在python中使用paramiko包。

所以有三个服务器,分别是localServer、server-A和server-B。请看下面的代码,这是不言而喻的,请让我知道哪里我做错了。

我正在使用的算法:我试图从localServer运行paramiko_test.py文件。

paramiko_test.py在server-A中执行copy.py文件。

copy.py使用SFTP将server-A中的文件source.txt复制到server-B。

当我从server-A运行copy.py时,它工作正常。但当我从localServer运行paramiko_test.py(它间接地在server-A中执行copy.py)时,它就不工作了!

从日志中,我知道从server-A到server-B有一个成功的连接,但是之后SFTP部分不工作了!

问题:我们可以在SFTP客户机中调用SFTP客户机吗?有没有更好的方法在两台服务器之间复制文件?

如果我做错了,请帮帮我。

服务器A,文件:copy.py:import paramiko

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('', username='serverB', password='passwd')

print "connected successfully!"

sftp = ssh.open_sftp()

print sftp

sftp.put('source.txt','/home/serverB/destination.txt' )

sftp.close()

print "copied successfully!"

ssh1.close()

exit()

本地服务器,paramiko_test.py:import paramiko

ssh = paramiko.SSHClient()

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect('', username='serverA', password='passwd')

print "connected successfully!"

stdin, stdout, stderr = ssh.exec_command("python /home/username/copy.py")

print stdout.readlines()

print "copied successfully!"

ssh.close()

exit()

stderr.readlines()的输出是:Traceback (most recent call last):

File "/home/sitaram/sumanth/test_progs/copy.py", line 12, in

sftp1.put('./sumanth_temp.txt','/home/ncloudadmin/sumanth.txt' )

File "/usr/lib/pymodules/python2.6/paramiko/sftp_client.py", line 558, in put

file_size = os.stat(localpath).st_size

OSError: [Errno 2] No such file or directory: './sumanth_temp.txt'

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36205186/article/details/113517958

智能推荐

c语言xyz最小值,有关问题XYZ的10种语言解决方案(一)之C语言篇-程序员宅基地

问题XYZ的10种语言解决方案(一)之C语言篇写这篇,或者这个系列的无聊博客文章完全是由于昨晚没事瞎想想到的,本来是在思考《Learn you a Hashkell for Great Good》中快速排序的Haskell实现代码,突然想到用其它语言来写写,然后做做对比其实很有意思,于是决定今天起来就做这件事情,由于是在想快速排序时想到的,因此也就将快速排序的实现作为第一篇吧。在这个系列的博客文章..._1/xyz最小值

面试基础之Hashmap21问_hash21-程序员宅基地

1:HashMap 的数据结构?A:哈希表结构(链表散列:数组+链表)实现,结合数组和链表的优点。当链表长度超过 8 时,链表转换为红黑树。transient Node<K,V>[] table;2:HashMap 的工作原理?HashMap 底层是 hash 数组和单向链表实现,数组中的每个元素都是链表,由 Node 内部类(实现 Map.Entry<K,V>接口)实现,HashMap 通过 put & get 方法存储和获取。存储对象时,将 K/V 键值传_hash21

Java密码学原型算法实现——第一部分:标准Hash算法_java 密码学 hash库-程序员宅基地

虽然C在密码学中有不可替代的优势:速度快,但是,Java的可移植性使得开发人员可以很快地将代码移植到各个平台,这比C实现要方便的多。尤其是Android平台的出现,Java的应用也就越来越广。因此,我本人在密码学研究过程中实际上也在逐渐使用和封装一些知名的Java密码学库,主要是方便自己使用。第一部分的实现是标准Hash算法。这一实现使用的是Java JDK,但是使用了Bouncy Castle的工具库实现Byte和String的一些转换。_java 密码学 hash库

Linux查看jquery版本号,npm 如何查看一个包的版本信息?-程序员宅基地

有了npm 我们能够简单的一段代码就下载我们需要的包,但是包是不断更新的,所以我们要关注包的版本信息;现在,假设我们需要 jquery ,但是jquery现在有很多版本,我们如何通过npm查看呢?查看远程仓库相关版本要知道,现在的jquery包在npm服务器的上,我们使用下面的命令查看:第一种方式:使用npm view jquery versions这种方式可以查看npm服务器上所有的jquer..._linux查看查看jquery版本

Java8新特性——Optional类的使用(有效的避免空指针异常)_optional避免空指针-程序员宅基地

OPtional类的使用概述到目前为止,臭名昭著的空指针异常是导致Java应用程序失败的最常见原因。以前,为了解决空指针异常,Google公司著名的Guava项目引入了Optional类,Guava通过使用检查空值的方式来防止代码污染,它鼓励程序员写更干净的代码。受到Google Guava的启发,Optional类已经成为Java 8类库的一部分。Optional实际上是个容器:它可以..._optional避免空指针

设置MySQL最大连接数-程序员宅基地

<pre name="code" class="sql">在使用MySQL数据库的时候,经常会遇到这么一个问题,就是“Can not connect to MySQL server. Too many connections”-mysql 1040错误,这是因为访问MySQL且还未释放的连接数目已经达到MySQL的上限。通常,mysql的最大连接数默认是100, 最大..._sqlyog 最大连接数

随便推点

c语言新建文件怎么弹出HTML,c++创建html文件_Outtttta的博客-程序员宅基地

c++创建html文件其实就是创建普通文件, CreateFile() 和WriteFile. 然后用ShellExcuteEx()来打开就行了(会自动调用IE).HANDLE handle;handle=CreateFile(L"\\windows\\google.html",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NUL..._c语言生成html

php调用汇率,php 实时汇率接口_天王不在家的博客-程序员宅基地

​function getExchangeRate($from_Currency,$to_Currency){$amount = urlencode($amount);$from_Currency = urlencode($from_Currency);$to_Currency = urlencode($to_Currency);$url = "download.finance.yahoo.com...

Vue3 触发组件选项(自定义事件)_vue3触发事件-程序员宅基地

触发组件选项(自定义事件)事件名事件名提供了自动的大小写转换,在子组件中使用驼峰命名的方法触发一个事件,父组件中通过-的形式 书写触发对应的方法名 this.$emit('myEvent'); <parent-com @my-event="myEvent" ></parent-com>定义自定义事件可以通过 emits 选项在组件上定义已发出的事件。当在 emits 选项中定义了原生事件 (如 click) 时,将使用组件中的事件替代原生事件侦听器_vue3触发事件

做数据分析为何要学统计学(3)——相关性分析_为什么要做相关性分析-程序员宅基地

相关性分析是量化不同因素间变动状况一致程度的重要指标。在样本数据降维(通过消元减少降低模型复杂度,提高模型泛化能力)、缺失值估计、异常值修正方面发挥着极其重要的作用,是机器学习样本数据预处理的核心工具。样本因素之间相关程度的量化使用相关系数corr,这是一个取之在[-1,1]之间的数值型,corr的绝对值越大,不同因素之间的相关程度越高——负值表示负相关(因素的值呈反方向变化),正值表示正相关..._为什么要做相关性分析

ORA-27101 Shared memory realm does not exist-程序员宅基地

1.sqlplus user/password在试图启动或连接数据库的时候 ,Oracle报告下列错误:ERROR:ORA-27101 Shared memory realm does not existORA-01034 ORACLE not available2.sqlplus /nolog3.SQL&gt; conn /as sysdbaERROR:ORA-2...