簡體   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