2017-06-02 188 views
0

我有一個Python腳本來啓動一組WebLogic服務器的節點管理器。主要調用做到這一點如下:Paramiko exec_command不像預期的那樣運行

stdin, stdout, stderr = client.exec_command('/app/oracle/Middleware/Oracle_Home/user_projects/domains/base_domain/bin/startNodeManager.sh')

這將啓動進程的服務器上,但是當我嘗試通過WLST的nmConnect()連接到節點管理器,我收到一個錯誤,節點管理器是不加工。然而,一臺機器工作...

我從一個腳本運行在不同的機器上。腳本使用第三方paramiko Python庫ssh進入遠程機器,然後調用上述命令。這個問題的一個有趣的部分是程序看起來在ps -ef | grep nodemanager中運行。但是,當我嘗試發出nmConnect()時,如果我自己手動從操作系統手動啓動節點管理器,則無法正常連接。

+0

唐當傳遞給'exec_command()'時,不會將'\ n'追加到命令中。 – pynexj

+0

「*不做任何事*」是什麼意思?任何錯誤?任何輸出?什麼是退出代碼? – pynexj

+0

我的意思是它不會啓動或停止節點管理器。有時它會打印一些shell輸出,有時它不會打印任何內容。沒有錯誤被拋出。 – user3870315

回答

0

通過任何機會輸出超過幾行輸出的startNodeManager.sh?如果是這樣,我的猜測是對執行過程中的過程阻斷,因爲你不讀出它的輸出...

對於通過的paramiko執行命令適當的方式,我建議你看這個:http://stackoverflow.com/a/32758464

+0

是的,有大量的輸出。如果我等待輸出,我寫的程序就在那裏。如果我不關心輸出,程序將在內存中啓動,但我無法訪問啓動的服務器並使用它。這是一個複雜的問題,我解釋它可能不會使它更容易理解。感謝您的答覆。我會檢查超鏈接! – user3870315

相關問題