jboss-cli:如何使用jboss-cli读取一个特定的系统属性?

fhity93d  于 2022-11-08  发布在  其他
关注(0)|答案(6)|浏览(184)

我是jboss-cli的新手,正在使用“jboss-cli配方”。

问题

如何使用jboss-cli读取 * 一个特定属性 *?例如

  • jboss主目录(例如“-Djboss主目录=/路径/到/我的/jboss”)
  • Xmx(“-Xmx=4G”)
    内容

“CLI Recipes”文档中有一个很有用的示例,用于获取 * 所有 * 系统属性。但是,它的“信息太多”。我想编写脚本读取一个特定属性。
https://docs.jboss.org/author/display/WFLY10/CLI+Recipes#CLIRecipes-
JBoss AS 7+中所有系统属性的概述,包括操作系统属性和在命令行上使用-D、-P或--properties参数指定的属性。

Standalone
[standalone@IP_ADDRESS:9999 /] /core-service=platform-mbean/type=runtime:read-attribute(name=system-properties)

先谢谢你

pn9klfpd

pn9klfpd1#

您可以执行以下操作:
:解析表达式(表达式=${jboss.home.dir})

w1e3prcc

w1e3prcc2#

您可以像这样使用cli:

$JBOSS_HOME/bin/jboss-cli.sh -c --command=/system-property=MY_PROPERTY:read-resource

您将得到如下输出:

$JBOSS_HOME/bin/jboss-cli.sh -c --command=/system-property=MY_PROPERTY:read-resource
{
    "outcome" => "success",
    "result" => {"value" => "4.0"}
}

你可以通过管道将其提取出来

<cli command>  | grep "{\"value\"" | sed "s/.*value\" => \"\([^\"]*\)\".*/\1/"

它有点难看,如果值是“value”=〉“value =”或一些难看的东西,会有一些令人讨厌的边缘情况。
更改sed命令,使其更具体一些,以解决此问题。

mm9b1k5b

mm9b1k5b3#

这个链接指向我的答案:我可以使用groovy脚本来获取这些值,但我认为“jboss-cli命令行”并不提供这种灵活性。
https://developer.jboss.org/wiki/AdvancedCLIScriptingWithGroovyRhinoJythonEtc

解决方案

这里有一个jboss home的解决方案。
[For可以从“/core-service=platform-mbean/type=memory/:读取属性(名称=堆内存使用情况)”中获取结果的内存
"猛击"


# !/bin/sh

# Note: must set jbbin to 'jboss home /bin'

groovy -cp $jbbin/client/jboss-cli-client.jar readJbossHome.groovy

很棒注意:这是“又快又脏”。

import org.jboss.as.cli.scriptsupport.*  

cli = CLI.newInstance()  
cli.connect()  

// Define properties
myParentProp="system-properties"
myProp="jboss.home.dir"

// Retrieve and pluck values
result = cli.cmd("/core-service=platform-mbean/type=runtime:read-resource(recursive=true,include-runtime=false)")

myResult = result.getResponse().get("result")
myParentVal = myResult.get(myParentProp)
myVal = myParentVal.get(myProp)

// Print out results
println "Property detail ${myProp}  is ${myVal}"

cli.disconnect()
9udxz4iz

9udxz4iz4#

你也可以通过Wildfly管理休息电话来做。

  • 网站管理
  • 后处理
  • 标头=内容类型:应用程序/json
  • 正文= {“操作”:“解析表达式”,“表达式”:“${jboss.home.dir}”}
hrirmatl

hrirmatl5#

随着较新的Teiid文档,我发现了一些有用的信息,我认为这可能有助于分享给遇到类似用例的人
https://access.redhat.com/documentation/en-us/jboss_enterprise_application_platform/6.3/html/administration_and_configuration_guide/configure_system_properties_using_the_management_cli
帮助使用jboss-cli添加、删除和读取系统属性

bis0qfac

bis0qfac6#

jboss-cli文件夹

如果你有一个cli命令,比如ehsavoie建议的:resolve-expression(expression=${jboss.home.dir}),并且想使用jboss-cli中的**“result”属性的内容,你可以将其保存在一个变量中。你可以使用反勾(`**)来计算表达式。

简单表达式

[standalone@localhost:9990 /] :resolve-expression(expression=${jboss.home.dir})
{
    "outcome" => "success",
    "result" => "/home/user/wildfly"
}

用于有效

[standalone@localhost:9990 /] set wildflydirectory=`:resolve-expression(expression=${jboss.home.dir})`
[standalone@localhost:9990 /] echo $wildflydirectory
/home/user/wildfly

PowerShell

如果您碰巧使用PowerShell,您可以使用一行程序,借助cli的--output-json选项和PowerShell的ConvertFrom-Json cmdlet来提取甚至是深度嵌套的结果。这样,James Roberts使用grep和sed的方法中的解析问题就解决了。

$value=(Invoke-Expression "./jboss-cli.ps1 -c --command=':resolve-expression(expression=`${jboss.home.dir})' --output-json" | ConvertFrom-Json).result

引用命令和转义正确的PowerShell特殊字符有点棘手。

相关问题