jboss-cli:如何使用 jboss-cli 读取一个特定系统 属性?
jboss-cli : How do I read one specific system property using jboss-cli?
我是 jboss-cli 的新手,正在使用 'jboss-cli recipes'。
问题
如何使用 jboss-cli 读取 一个特定的 属性?例如。
- jboss.home.dir(例如“-Djboss.home.dir=/path/to/my/jboss”)
- Xmx ("-Xmx=4G")
上下文
"CLI Recipes" 文档有这个有用的示例来获取 所有 系统属性。然而它 'too much infomration'。我想编写一个特定的阅读脚本 属性.
https://docs.jboss.org/author/display/WFLY10/CLI+Recipes#CLIRecipes-
Overview of all system properties in JBoss AS7+ including OS system
properties and properties specified on command line using -D, -P or
--properties arguments.
Standalone
[standalone@IP_ADDRESS:9999 /] /core-service=platform-mbean/type=runtime:read-attribute(name=system-properties)
提前致谢
这个 link 指出了我的答案:我可以使用 groovy 脚本来获取值。据我所知,"jboss-cli command line" 不提供这种灵活性。
https://developer.jboss.org/wiki/AdvancedCLIScriptingWithGroovyRhinoJythonEtc
解决方案
这是 jboss 家庭的解决方案。
[对于内存,您可以从“/core-service=platform-mbean/type=memory/:read-attribute(name=heap-memory-usage)”获得结果
bash
#!/bin/sh
# Note: must set jbbin to 'jboss home /bin'
groovy -cp $jbbin/client/jboss-cli-client.jar readJbossHome.groovy
Groovy
注意:这是 'quick and dirty'。
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()
你可以做一个:
:resolve-expression(expression=${jboss.home.dir})
您也可以通过 Wildfly 管理休息电话来完成。
- http://localhost:9990/management
- POST
- Headers = Content-Type:application/json
- Body =
{
“操作”:“resolve-expression”,
“表达式”:“${jboss.home.dir}”
}
您可以像这样使用 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\" => \"\([^\"]*\)\".*//"
它有点难看,如果值是类似于“值”=>“值=”或一些可怕的东西,就会出现一些令人讨厌的边缘情况。
总的来说,这工作正常。
将 sed 命令更改为更具体一些以解决此问题。
通过较新的 Teiid DOC,我发现了一些有用的信息,我认为这可能有助于与遇到类似用例的人分享
使用 jboss-cli
帮助添加、删除和读取系统属性
jboss-cli
如果你有像 ehsavoie 建议的 cli 命令 :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,您可以使用 one-liner 在 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 特殊字符有点棘手。
我是 jboss-cli 的新手,正在使用 'jboss-cli recipes'。
问题
如何使用 jboss-cli 读取 一个特定的 属性?例如。
- jboss.home.dir(例如“-Djboss.home.dir=/path/to/my/jboss”)
- Xmx ("-Xmx=4G")
上下文
"CLI Recipes" 文档有这个有用的示例来获取 所有 系统属性。然而它 'too much infomration'。我想编写一个特定的阅读脚本 属性.
https://docs.jboss.org/author/display/WFLY10/CLI+Recipes#CLIRecipes-
Overview of all system properties in JBoss AS7+ including OS system properties and properties specified on command line using -D, -P or --properties arguments.
Standalone
[standalone@IP_ADDRESS:9999 /] /core-service=platform-mbean/type=runtime:read-attribute(name=system-properties)
提前致谢
这个 link 指出了我的答案:我可以使用 groovy 脚本来获取值。据我所知,"jboss-cli command line" 不提供这种灵活性。
https://developer.jboss.org/wiki/AdvancedCLIScriptingWithGroovyRhinoJythonEtc
解决方案
这是 jboss 家庭的解决方案。
[对于内存,您可以从“/core-service=platform-mbean/type=memory/:read-attribute(name=heap-memory-usage)”获得结果
bash
#!/bin/sh
# Note: must set jbbin to 'jboss home /bin'
groovy -cp $jbbin/client/jboss-cli-client.jar readJbossHome.groovy
Groovy 注意:这是 'quick and dirty'。
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()
你可以做一个:
:resolve-expression(expression=${jboss.home.dir})
您也可以通过 Wildfly 管理休息电话来完成。
- http://localhost:9990/management
- POST
- Headers = Content-Type:application/json
- Body = { “操作”:“resolve-expression”, “表达式”:“${jboss.home.dir}” }
您可以像这样使用 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\" => \"\([^\"]*\)\".*//"
它有点难看,如果值是类似于“值”=>“值=”或一些可怕的东西,就会出现一些令人讨厌的边缘情况。 总的来说,这工作正常。
将 sed 命令更改为更具体一些以解决此问题。
通过较新的 Teiid DOC,我发现了一些有用的信息,我认为这可能有助于与遇到类似用例的人分享
使用 jboss-cli
帮助添加、删除和读取系统属性jboss-cli
如果你有像 ehsavoie 建议的 cli 命令 :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,您可以使用 one-liner 在 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 特殊字符有点棘手。