2015-10-19 1 views
1

Я хочу создать приложение Telnet на основе Java, которое может отправить команду telnet на какой-либо сервер и захватить его ответ, просто в командной строке Telnet emulator, Просьба предоставить несколько учебных пособий для создания.Java-приложение Telnet

я видел пару учебник это требуется Java телнет сервер и клиент оба, но в моем случае мне нужно только нужно послать команду и захват телнет вывод переменной или написать текстовый файл

Спасибо.

+0

слишком широк. Существует десяток или более применимых RFC и несколько существующих реализаций. – EJP

ответ

1

Взгляните на Apache Commons Net TelnetClient. Он может легко обеспечить поведение, в котором вы нуждаетесь. Вам просто нужно получить экземпляр TelnetClient, вызвать метод connect и работать с удаленным сервером через Input- и OutputStreams. Here вы можете найти официальный пример, как его можно использовать, но это немного избыточно, ИМО.

Вот еще один пример из here:

import org.apache.commons.net.telnet.TelnetClient; 

import java.io.InputStream; 
import java.io.PrintStream; 

public class AutomatedTelnetClient { 
    private TelnetClient telnet = new TelnetClient(); 
    private InputStream in; 
    private PrintStream out; 
    private String prompt = "%"; 

    public AutomatedTelnetClient(String server, String user, String password) { 
     try { 
      // Connect to the specified server 
      telnet.connect(server, 23); 

      // Get input and output stream references 
      in = telnet.getInputStream(); 
      out = new PrintStream(telnet.getOutputStream()); 

      // Log the user on 
      readUntil("login: "); 
      write(user); 
      readUntil("Password: "); 
      write(password); 

      // Advance to a prompt 
      readUntil(prompt + " "); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public void su(String password) { 
     try { 
      write("su"); 
      readUntil("Password: "); 
      write(password); 
      prompt = "#"; 
      readUntil(prompt + " "); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

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

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

    public String sendCommand(String command) { 
     try { 
      write(command); 
      return readUntil(prompt + " "); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 

    public void disconnect() { 
     try { 
      telnet.disconnect(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    public static void main(String[] args) { 
     try { 
      AutomatedTelnetClient telnet = new AutomatedTelnetClient(
        "myserver", "userId", "Password"); 
      System.out.println("Got Connection..."); 
      telnet.sendCommand("ps -ef "); 
      System.out.println("run command"); 
      telnet.sendCommand("ls "); 
      System.out.println("run command 2"); 
      telnet.disconnect(); 
      System.out.println("DONE"); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

Спасибо, это сработало :) – Kavinda