문제 : 버퍼링 된 reader.readline()에서 "무한 루프/블록"을 벗어날 수없는 것 같습니다. 그것은 한 번 전달하고 두 번째가 while 루프에서 돌아온 후에 거기에 매달립니다. 나는에서 nilbot에서 사용하는 방법을 사용하고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());
}
}
}
: Here 내가 정확히 뭐하는 거지, 내가 쉘을 통해 명령어를 전송하려고
여기 내 코드입니다.
문제점 :
서버가 더 명령을 수신 할 준비가 될 때까지 (프롬프트 "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에서 중지되지 않습니다)하지만 통과와 쓰기를 건너 뜁니다 쉘에 그리고 때로는 예측할 수 없을 것이다)
내가 할 수있는 것에 대한 아이디어는?