2016-01-06 133 views
1

我的遠程服務器上有一個像下面這樣的python文件「run.py」。通過SSH在後臺執行遠程python腳本

import subprocess 
subprocess.Popen(["nohup", "python", "/home/admin/Packet/application.py", "&"]) 

我想從我的本地計算機上使用SSH運行該文件。我想下面。但是,我的本地終端卡在那裏。它似乎並沒有在後臺運行。

ssh -n -f -i /Users/aws/aws.pem [email protected]_world.com 'python /home/admin/run.py'

運行命令後,我的終端卡住了。

+0

您可以婉使用https://en.wikipedia.org/ wiki/GNU_Screen – kfx

+0

@kfx,不,絕對不必要。問題是這個過程確實沒有被髮送到背景 –

+0

爲什麼它是一個python腳本?殼牌就足夠簡單了,不是嗎? –

回答

1

以下是我正在使用的一個示例,您可以嘗試類似這樣的操作,自定義ssh_options。

import subprocess 
ssh_options = '-o ConnectTimeout=10 -o PasswordAuthentication=no -o PreferredAuthentications=publickey -o StrictHostKeyChecking=no' 
server_name = 'remote_server.domain' 
cmd = 'ssh ' + ssh_options + ' ' + server_name + ' "/usr/bin/nohup /usr/bin/python /home/admin/run.py 2>&1 &"' 
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 

之後,您可以將輸出重定向到一個平面文件,更改:

2>&1 & 

爲:

>> /path/lo/log_file.txt 2>&1 & 
+0

嘿,這個工程。但是,我想從遠程服務器執行腳本。 – moeseth

+0

我的設置稍微複雜一些,但我所做的基本上是這樣的,遠程cmd下載腳本並調用解釋器來執行它。「/ usr/bin/nohup/usr/bin/wget -T3 -qO - 「+ args.url + args.script +」|「+ args.interpreter + .... – Claudio

相關問題