簡體   English   中英

jboss-cli:如何使用 jboss-cli 讀取一個特定的系統屬性?

[英]jboss-cli : How do I read one specific system property using jboss-cli?

我是 jboss-cli 的新手,正在研究“jboss-cli 食譜”。

問題

我如何使用 jboss-cli 讀取一個特定的屬性 例如

  • jboss.home.dir(例如“-Djboss.home.dir=/path/to/my/jboss”)
  • Xmx ("-Xmx=4G")

語境

“CLI Recipes”文檔有這個有用的示例來獲取所有系統屬性。 但是它的“信息太多”。 我想編寫讀取一個特定屬性的腳本。

https://docs.jboss.org/author/display/WFLY10/CLI+Recipes#CLIRecipes-

JBoss AS7+ 中所有系統屬性的概述,包括 OS 系統屬性和在命令行上使用 -D、-P 或 --properties arguments 指定的屬性。

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

提前致謝

你可以做一個:

: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\" => \"\([^\"]*\)\".*/\1/"

它有點難看,如果值是“值”=>“值=”或一些可怕的東西,那么會有一些令人討厭的邊緣情況。 一般來說,這可以正常工作。

將 sed 命令更改為更具體一點以解決該問題。

此鏈接為我指出了答案:我可以使用 groovy 腳本來獲取值。 從我看來,“jboss-cli 命令行”沒有提供這種靈活性。

https://developer.jboss.org/wiki/AdvancedCLIScriptingWithGroovyRhinoJythonEtc

解決方案

這是jboss home的解決方案。

[對於內存,您可以從“/core-service=platform-mbean/type=memory/:read-attribute(name=heap-memory-usage)”獲得結果

猛擊

#!/bin/sh
# Note: must set jbbin to 'jboss home /bin'
groovy -cp $jbbin/client/jboss-cli-client.jar readJbossHome.groovy  

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()  

您也可以通過 Wildfly 管理休息電話來完成。

  • http://localhost:9990/management
  • 郵政
  • 標題 = 內容類型:應用程序/json
  • Body = { "operation":"resolve-expression", "expression":"${jboss.home.dir}" }

使用較新的 Teiid DOC,我發現了一些有用的信息,我認為這可能有助於與遇到類似用例的人分享

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 幫助添加、刪除和讀取系統屬性

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,則可以在 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 特殊字符有點棘手。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM