我想创建一个 bash/shell 脚本,通过使用 jboss-cli 监视 Wildfly 的 JVM 内存使用情况因此我需要获取主机并在 for 循环中获取每个主机的 Wildfly 服务器。然而,启动/连接 jboss-cli 需要几秒钟并且会给 CPU 带来压力。这使得脚本非常慢。在交互式 jboss-cli 会话中发送命令非常快。
有没有办法只连接一次 jboss-cli 并将输入命令发送到该活动会话?我需要命令的输出才能继续执行脚本。
当前脚本:
# List all hosts:
hosts="$(jboss-cli.sh -c --controller=servername:9990 --command=":read-children-names(child-type=host)" | grep " " | awk '{print $1}' | sed 's/,//g' | sed 's/"//g')"
# Loop through hosts results:
for host in $hosts
{
#List all servers:
servers="$(jboss-cli.sh -c --controller=servername:9990 --command="/host=$host:read-children-names(child-type=server)" | grep " " | awk '{print $1}' | sed 's/,//g' | sed 's/"//g')"
# Loop through server results:
for server in $servers
{
# check if server is running:
serverstate=$(jboss-cli.sh -c --controller=servername:9990 --command="/host=$host/server=$server:read-attribute(name=server-state)" | grep "result" | awk '{print $3}' | sed 's/"//g')
if [ $serverstate = "running" ]
then
#Do a check etc. etc.
fi
}
}