wsadmin打印结果,每行一个字符

时间:2016-07-13 21:13:48

标签: websphere jython wsadmin

我试图使用某些wsadmin命令的输出在其他命令中使用,但是,当我循环输出时,它似乎每行打印一个字符,这会炸毁我的其他命令。我需要添加什么才能使每行不打印单个字符。

cell_name = AdminControl.getCell()
# Get the DMGR Complete Object Name
dmgr_object_name =  AdminControl.completeObjectName('WebSphere:name=DeploymentManager,type=DeploymentManager,mbeanIdentifier=DeploymentManager,*')
# Get the full Application Manager string. 
appManager = AdminControl.queryNames('cell=' + cell_name + ',type=ApplicationManager,*')

for jvm in appManager :
  print( jvm )

2 个答案:

答案 0 :(得分:1)

添加补充@ Pred的方法的答案,并附加一些解释。

为了澄清,查询AdminControl.queryNames('cell=RandomCell1,type=ApplicationManager,*')返回一个string对象,如下所示:

'WebSphere:name=ApplicationManager,process=server1,platform=proxy,node=Node1,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0\nWebSphere:name=ApplicationManager,process=dmgr,platform=proxy,node=Dmgr,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0'

因此,使用for循环遍历上述字符串依次打印每个字符。

在上面的字符串中,每个条目由\n(换行符)字符分隔。因此,将字符串拆分为\n字符。

AdminControl.queryNames('cell=RandomCell1,type=ApplicationManager,*').split('\n')

返回一个字符串列表,每个字符串都是一个对应一个对象的条目。该列表看起来如下所示:

['WebSphere:name=ApplicationManager,process=server1,platform=proxy,node=Node1,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0', 'WebSphere:name=ApplicationManager,process=dmgr,platform=proxy,node=Dmgr,version=8.5.5.5,type=ApplicationManager,mbeanIdentifier=ApplicationManager,cell=RandomCell1,spec=1.0']

遍历列表会将每个条目作为一个完整的字符串返回。

答案 1 :(得分:0)

答案是导入Java lineseparator

# get line separator
import  java.lang.System  as sys
lineSeparator = sys.getProperty('line.separator')
# Get the Cell Name
cell_name = AdminControl.getCell()
# Get the DMGR Complete Object Name
dmgr_object_name =  AdminControl.completeObjectName('WebSphere:name=DeploymentManager,type=DeploymentManager,mbeanIdentifier=DeploymentManager,*')
# Get the full Application Manager string. 
appManager = AdminControl.queryNames('cell=' + cell_name + ',type=ApplicationManager,*').split(lineSeparator)

然后,可以正确分割结果。