2012-07-19 242 views
3

我相信我是一個相當獨特的問題,我用它來站立遠程計算機上的web服務器。在遠程計算機上啓動一個啓動bash腳本的python腳本

我有一個控制器腳本,它在檢查分類帳後,啓動遠程計算機上的「構建器」腳本。這個構建器腳本的一部分調用了一個bash腳本,它啓動了一個過程,我希望在兩個腳本完成後繼續運行。

我唯一的問題是,生成器腳本似乎完成(到最後一行),但似乎沒有將控制權返回給控制器腳本。

爲了記錄,我在控制器腳本中使用subprocess.call(啓動ssh調用)來啓動遠程計算機上的構建器腳本。我已經用各種方法在構建器腳本中啓動bash腳本,但似乎構建器不會將控制權返回給控制器,直到殺死由bash腳本產生的進程。

事情我已經嘗試:

pid=os.spawnl(os.P_NOWAIT,dest+'/start_background_script.sh') 
pid=subprocess.Popen([dest+'/start_background_script.sh']) 
os.system(dest+'/start_background_script.sh &') 
pid=os.spawnl(os.P_NOWAIT,dest+'/start_background_script.sh') 

的bash腳本被寫入到你執行它,它的背景兩個進程,然後返回控制。

有什麼建議嗎?

回答

3

聽起來像fabric給我的工作。

Fabric爲您處理遠程(以及本地)機器上的shell調用處理。

+0

我被鎖定在僅使用基於2.6.2的模塊。但是,這是很好的知道。 – Malforus 2012-07-30 21:09:58