2011-07-04 134 views
0

這是我的問題:結構腳本執行沒有完成

我有一個Python生成腳本,執行幾個命令來生成一個.air包。這部分工作是正確完成的,但之後,我想將此文件部署到服務器。 我在ordrer中使用結構腳本來做到這一點。下面是幾行:

if os.system(os.environ["FAB"] + "\\fab.exe " + version + " deploy") != 0: 
    print("fab error") 
    sys.exit(-1) 

當我運行此腳本,在標題中稱,fab.exe執行未完成。如果我在cmd.exe窗口中單獨運行它,這沒有問題,這意味着我的SSH配置似乎沒問題。

我試圖打印輸出中,並在文件中的錯誤,但是當我殺晶圓廠任務,印=(無 有沒有人對這個問題的想法?是否有可能構建腳本的執行具有其他權利比我的Windows帳戶?

預先感謝您!

回答

0

只需要注意,您可以直接導入結構本身並告訴它運行它的任務,所以實際上您不必進行子處理。它畢竟只是python,可以用作庫:http://docs.fabfile.org/en/1.1.1/usage/library.html

+0

感謝您的回答,如果我有一些時間,我會嘗試! –

2

您可以使用子模塊,以瞭解發生了什麼

import subprocess 
pipe = subprocess.Popen(command, stdout = subprocess.PIPE, 
         stderr = subprocess.PIPE, shell = True) 
stdout, stderr = pipe.communicate() 
pipexit = pipe.returncode 

那麼你可能需要超時,爲此,你可以使用管道的.pol l()調用,它允許檢查子進程是否完成(如果在一段時間沒有完成後,你可能會決定終止它)。

+0

所以我試過這個,我得到一個錯誤輸出:系統找不到指定的路徑。 但是哪條路? fab.exe或fabfile中路徑的路徑?好奇,好奇......當我在shell中調用它時,它運行正常,但是當構建服務器試圖執行它時,它不會完成=( –

+0

我看得更深,看到當我在cmd中運行腳本時.exe窗口,fab.exe是由管理員用戶啓動的,當服務器啓動它時,所有者是SYSTEM。SYSTEM對fab.exe文件有完全控制權,所以我不知道該怎麼做。是否有可能是SSH密鑰只爲管理員用戶加載而不是SYSTEM? –

0

我找到了解決方案!也許不是最好的,但在第一次,它會沒事的。 我在fabfile.py文件的變量env.password的代碼中添加了密碼。

我發現沒有那個「提示」被構建服務器「顯示」,並且停止執行等待密碼!

謝謝你的回答Cinquo。它幫助我接收結構的輸出= D