我有一個運行星號的Linux服務器,我想知道它是重新啓動還是服務器發生了什麼,所以我編寫了一個Java應用程序來讀取控制檯。像這裏(http://www.coderanch.com/t/556707/java/java/connect-Linux-Java-code);這是一個非常好的例子。使用java遠程登錄到Linux系統並運行「grep」
但這裏有一個問題:
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
,它給了我一個空白行,該代碼讀取由排安慰行。所以如果我在這個空行之後得到任何數據,沒有任何東西給我。計劃堅持在那裏。所以我需要在空白行之後閱讀第二行。 或任何想法讀取此'Disconnect'字符串?
我的主要目的 - 「星號重啓了嗎?」 - 因爲當星號重新啓動時,給出這樣的字符串,我們不知道爲什麼星號重新啓動!
嘗試[JSch](http://www.jcraft.com/jsch/)。 – 2013-02-28 16:23:45
已經在使用JSch:D – Acablack 2013-02-28 16:27:37
嗯,從示例Shell和Sudo沒有提供類似的功能? – 2013-02-28 16:47:38