gpt4 book ai didi

java - java远程登录Linux系统运行 "grep"

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:47 24 4
gpt4 key购买 nike

我有一台运行 Asterisk 的 Linux 服务器,我想知道它已重新启动或服务器中发生了什么,所以我编写了一个 Java 应用程序来读取控制台。喜欢这里 ( http://www.coderanch.com/t/556707/java/java/connect-Linux-Java-code );这是一个很好的例子。

但是这里有个问题:

      String user=host.substring(0, host.indexOf('@'));      
host=host.substring(host.indexOf('@')+1);

Session session=jsch.getSession(user, host, 22);
UserInfo ui=new MyUserInfo();
session.setUserInfo(ui);
session.connect();

String command= "asterisk -rvvv | grep 'Disconnect' ";

Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command);

channel.setInputStream(null);

((ChannelExec)channel).setErrStream(System.err);

InputStream in=channel.getInputStream();

channel.connect();
while(in.available()==0){
int i=in.read(tmp, 0, 1024);
if(i<0)
{break;}
System.out.print("-"+new String(tmp, 0, i));

}

当我执行 asterisk -rvvvvv | grep 'Disconnect,它给了我一个空白行,这段代码逐行读取到控制台。所以如果我在这个空白行之后得到任何数据,什么也不会给我。程序卡在那里。所以我需要在空行之后阅读第二行。 console example或者有什么想法可以阅读这个“断开连接”字符串吗?

我的主要目的 - “asterisk 重启了吗?” - 因为当asterisk重启时,给出了这样一个字符串,而我们不知道为什么asterisk会重启!

最佳答案

你可以使用:asterisk -rvvvv | grep -v ^$ | grep '断开连接'grep 命令将删除空行

关于java - java远程登录Linux系统运行 "grep",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15139830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com