繁体   English   中英

如何在远程机器上运行本地python脚本

[英]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提供了远程命令的抽象,默认是sshscp ......但很容易看出它在做什么。

>>> s.message
'ssh -q guido.remote.com "python hello.py"'
>>> c.message
'scp -q -r hello.py guido.remote.com:~/hello.py'

在这里获取pathoshttps//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@remotessh user@remote运行后编写的所有内容。 如果要传递多个shell指令,请将它们与\\;分开\\; 不要混淆你的本地shell。

有涉及Python模块像其他可能的解决方案面料 ,可能对您有用。

如果要在远程计算机上执行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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM