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
と、空白行が表示され、このコードは行ごとにコンソールに読み込まれます。したがって、この空白行の後にデータを取得しても、何も表示されません。プログラムはあそこに固執します。だから私は空白行の後の2行目を読む必要があります。
または、この「切断」文字列を読み取るためのアイデアはありますか?
私の主な目的-「アスタリスクは再起動しましたか?」-アスタリスクが再起動すると、次のような文字列が表示され、アスタリスクが再起動する理由がわかりません。