2014-04-26 59 views
1

我需要將下面的輸出捕獲到變量中。 我知道我們可以訪問serverRuntime或domainRuntime()樹並獲取狀態。但需要得到下面的工作。WLST將狀態('ms1')的輸出捕獲到變量

wls:/owb/serverConfig> state('Server1') 
Current state of 'Server1' : RUNNING 

我嘗試了兩種方式:

wls:/owb/serverConfig> print state('Server1') 
Current state of 'Server1' : RUNNING 
None 

wls:/owb/serverConfig> x=state('Server1') 
Current state of 'Server1' : RUNNING 

wls:/owb/serverConfig> print x 
None 

回答

2

你必須使用服務器運行時MBean的getState()方法。 您可以通過導航到wlst運行時樹或使用查找方法來獲取服務器運行時mbean。

樣品:

domainRuntime() 
slrBean = cmo.lookupServerLifeCycleRuntime('Server1') 
status = slrBean.getState() 
print 'Status of Managed Server is '+status 

又見WLST正式文件Getting Runtime Information

+0

我嘗試了,我得到下面的錯誤: WLS:/ OWB/domainRuntime> slrBean = cmo.lookupServerLifecycleRuntime( 'owb001' ) 回溯(最裏面的最後一個): 文件「」,第1行,在? AttributeError:lookupServerLifecycleRuntime – SSA

+2

這是正確的答案,但應該有循環的CAPS C – SSA

+0

在lookupServerLifeCycleRuntime中使用CAPS C的固定代碼,非常感謝@ user3460652 –

1

王同元和我2011年提出的同樣的問題。 下面是解決你的問題的步驟。 1.使用重定向,stopRedirect命令捕獲狀態命令的輸出 2.在搜索功能中使用Python正則表達式來提取所需的服務器輸出。

代碼段是這裏

  fileName='/tmp/myserver_state.txt' 
      redirect(fileName) 
      state(server_nm,'Server') 
      stopRedirect() 
      f = open(fileName) 
      try: 
        for line in f.readlines(): 
          if re.search('Current state',line): 
            status[server_nm]=line 
      except: 
        continue 

現在可以將這個塊後應用所需的邏輯。

乾杯! HTH

+0

是的,我認爲這是做到這一點的唯一方法,沒有任何其他沒有寫入文件的方式? – SSA

0

下面是我用的,並正在般的魅力

cd("/ServerRuntimes/ms1") 
    state=cmo.getState() 
    print state