2013-01-15 28 views
1
# This Perl script open connection and call domains 
# $jar stands for path of jmxterm jar file 

open JMX, "| java -jar jmxterm-1.0-alpha-4-uber.jar -n"; // jmx jar file 
#print JMX "help \n"; 

my $host = "127.0.0.1"; // hostname 
my $port = 7199; //jmx port number 

print JMX "open $host:$port\n"; 
#print JMX "domains\n"; 
print JMX "domain org.apache.cassandra.request\n"; 
print JMX "bean type=ReadRepairStage\n"; 
print JMX "get CompletedTasks\n"; 
print JMX "close\n"; 
close JMX; 

目前我得到的输出作为CompletedTasks = 1234,我需要1234如何从Linux的输出用perl提取显示的号码

+0

要输出到哪里?标准输出?如果是这样,你必须听取choroba并考虑双向沟通解决方案。 – TLP

+0

这就是标准输出。我对perl相当陌生,如果我使用open2并重写上面的代码,该如何执行jar? – srp

+0

看看文档,它应该告诉你如何使用它。但是,你确定perl是最好的工具吗?如果你不知道perl,而你正在执行java,为什么还要增加复杂性? – TLP

回答

0

您不能使用简单的open建立双向通信。有关更多信息,请参阅IPC::Open2

+0

感谢回复@choroba。但我只需要读取bean中的值并使用这些值来绘制图形 – srp

0

Jmx4Perl为访问JMX信息提供了完整的Perl API。此处不需要启动JVM,但需要安装Jolokia代理(但也有代理proxy mode)。

因为代理通过简单的JSON和HTTP公开JMX API,所以您也可以轻松使用纯shell脚本访问代理。

相关问题