問題:我似乎無法擺脫緩衝reader.readline()中的「無限循環/塊」。它會傳遞一次,然後在while循環的第二個來臨之後掛在那裏。Jsch - 通過ssh發送命令
這裏是我的代碼:
public void sendCommand(String command){
{
String line;
try{
while((line = consoleOutput.readLine())!= null)
{
System.out.println(line);
if(line.equals("rkscli:") || line.equals("password :") || line.equals("Please login: ")){
pin.write((command + "\n\r").getBytes());
}
}
}
我使用從使用nilbot方法:Here 我做的正是這一點,在這裏我想通過shell發送命令。
問題:
我試圖做到的是讓程序等待,直到服務器已準備好接收更多的命令(等待提示「rkscli」,因爲一些命令需要更多的時間)。我該怎麼做才能做到這一點?我目前使用pipedinput/output方法。
其他信息:
服務器將提示之前給我「」的(空與換行符的字符串)。其中幾個它會給我提示。我也注意到,如果我改變了代碼,使其看起來像這樣:
public void sendCommand(String command){
{
String line;
try{
while((line = consoleOutput.readLine())!= null)
{
System.out.println(line);
pin.write("\r\n".getBytes());//Added line
if(line.equals("rkscli:") || line.equals("password :") || line.equals("Please login: ")){
pin.write((command + "\n\r").getBytes());
}
}
}
它不會在使用BufferedReader.readLine掛(),但將通過和跳過寫(它似乎並沒有寫什麼到殼,有時它會和不可預測)
任何想法,我可以做什麼?