Команды Telnet через Java с перезаписью - PullRequest
0 голосов
/ 31 августа 2018

Я вижу, что были заданы похожие вопросы, и я воспользовался советом, указанным в Apache Commons TelnetClient.

Моя проблема в том, что есть поле имени пользователя и пароля, в котором есть строка для ввода, но когда я использую код для ввода этих сведений, она смещает строку вместо замены строки текстом.

Например: Перед входом Имя: _________

После ввода Имя пользователя: имя пользователя ________

Код, который я использую, выглядит следующим образом:

public void telnetTest()
{
     try{          

      telnet.connect("server IP", 8080);

      ptyIn = telnet.getInputStream();
      ptyOut = new PrintStream(telnet.getOutputStream());

      readUntil("Username: ");
      write("user");
      readUntil("Password: ");
      write("password");

      // Advance to a prompt
      readUntil(prompt + " ");

      telnet.disconnect();
     }

     catch(Exception e)
     {

     }

}

public String readUntil(String pattern) {
    try {
        char lastChar = pattern.charAt(pattern.length() - 1);
        StringBuffer sb = new StringBuffer();
        boolean found = false;
        char ch = (char) ptyIn.read();
        while (true) {
            System.out.print(ch);
            sb.append(ch);
            if (ch == lastChar) {
                if (sb.toString().endsWith(pattern)) {
                    return sb.toString();
                }
            }
            ch = (char) ptyIn.read();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

public void write(String value) {
    try {
        ptyOut.flush();
        ptyOut.println(value);            
        ptyOut.flush();
        System.out.println(value);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Любой совет будет с благодарностью.

...