[英]how to run local python script on remote machine
我在我的本地机器上有一个python脚本。有没有办法在远程机器上运行这个脚本。我的意思是python脚本应该在本地机器上,但执行应该在远程机器上进行,并将输出返回到本地机器。
pathos
包有一些工具,可以很容易地与远程机器进行交互,所有工具都直接来自python ......你也可以轻松捕获stdout
或其他管道响应并将它们返回给你的调用脚本。
所以,假设您有一个本地脚本hello.py
,如下所示:
# 'hello.py'
import os
print os.system('hostname')
他们可以推送脚本并像这样执行它:
>>> import pathos
>>> c = pathos.core.copy('hello.py', destination='guido.remote.com:~/hello.py')
>>> s = pathos.core.execute('python hello.py', host='guido.remote.com')
>>> print s.response()
guido
0
>>> s.pid()
37429
还有ssh-tunneling,设置守护进程,远程端口pickle,以及处理杀死远程进程......如果你需要那些东西。
pathos
提供了远程命令的抽象,默认是ssh
和scp
......但很容易看出它在做什么。
>>> s.message
'ssh -q guido.remote.com "python hello.py"'
>>> c.message
'scp -q -r hello.py guido.remote.com:~/hello.py'
在这里获取pathos
: https : //github.com/uqfoundation
您可以在此处找到类似问题的解决方案
对于我可能也面临的具体问题,我有一个本地脚本,我希望使用其虚拟环境在远程计算机上运行。 我将以下内容添加到我的bashrc中:
rpython (){
cat $1 | ssh user@remote source /home/user/venv/bin/activate \; python -
}
这样我就可以运行rpython local_script.py
。 所以这是它的工作原理: cat $1 |
管道第一个参数和ssh user@remote source /home/user/venv/bin/activate \\; python -
ssh user@remote source /home/user/venv/bin/activate \\; python -
part通过ssh拷贝管道,启动远程机器的虚拟环境venv
并运行local_script.py
。 请注意, local_script.py
可能最终打印的所有内容都会返回到本地stdout。
TL; DR这里是ssh user@remote
在ssh user@remote
运行后编写的所有内容。 如果要传递多个shell指令,请将它们与\\;
分开\\;
不要混淆你的本地shell。
如果要在远程计算机上执行python脚本,则脚本必须驻留在远程计算机上。
如果您具有对远程计算机的SSH访问权限,则需要先将文件从本地计算机复制到远程计算机:
scp -r /this/file/location/my_script.py user@server:/home/newlocation
然后只需SSH到远程计算机并运行脚本。
ssh user@server
cd /home/newlocation
python my_script.py
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.