2012-03-23 192 views
2

我遇到以下問題:我必須從Web應用程序(播放)中運行遠程服務器上的命令,但是從Web服務器上,我沒有ssh訪問遠程服務器的權限。我唯一擁有的就是遠程服務器可以通過http(s)訪問Web服務器。從Web應用運行遠程服務器上的命令

我的想法是創建一個python守護進程,該守護進程輪詢通過JSON返回請求命令的URL。

這是個好主意嗎?有沒有可以幫助客戶的框架?

BR劉若英

+0

你需要在遠程服務器上做什麼?執行任意的shell命令?執行一個特定的shell命令? – 2012-03-23 13:35:13

+0

執行任意shell命令。 – reen 2012-03-23 13:46:35

+0

看起來像一個壞主意。如果你必須這樣做,至少只允許一組受限制的命令(在chroot監獄裏面會很好)。 – 2012-03-23 13:56:00

回答

3

我的想法是創建一個蟒蛇守護,這其中投票通過JSON返回 請求命令的URL。

這實質上是一個消息代理。因此,不要自己寫一個,而要使用任何可用的消息代理,如rabbitmq,這些消息代理都具有與Java綁定的功能,以及要在目標服務器上運行的任何語言。

從您的Web服務器向代理髮送消息。這會觸發目標服務器上的工作人員「醒來」並執行一些任務。然後,您可以選擇在整個消息代理中獲取結果,或者將其寫入某個公共存儲區(例如更新某個k/v存儲區或寫入公共數據庫)。

+0

這也是我的想法,但我無法安裝新的消息代理服務器。我認爲我唯一的解決方案就是我提到的那個。 – reen 2012-03-26 21:05:14

+1

它不需要在專用機器上。 – 2012-03-27 04:05:22

0

看來你可以做遠程調用與,你可以調用遠程對象的蟒蛇。 Python Remote Objects是一個完全用Python編寫的分佈式對象系統,僅用於Python。它很小,簡單而且免費。點擊此處查看:pyro

+0

不幸的是沒有端口對遠程服務器開放。我只是從遠程服務器向Web服務器發送http(s)連接。 – reen 2012-03-23 14:55:06

相關問題