我有一个运行星号的 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
时,它给了我一个空白行,并且此代码逐行读取到控制台。所以如果我在这个空白行之后得到任何数据,什么都没有给我。程序卡在那里。所以我需要在空行之后阅读第二行。
或任何想法阅读此“断开连接”字符串?
我的主要目的 - “星号重启了吗?” - 因为当星号重新启动时,会给出一个这样的字符串,而我们不知道星号为什么会重新启动!