Senden telnet-Befehle und das Lesen der Antwort mit Java

Ich arbeite für eine große Organisation, die unterstützt viele verschiedene Websites auf einem landesweiten Netzwerk. Unser Hersteller liefert Diagnose-tools für die hardware, die wir verwenden, an jedem Standort. Die Diagnose und Berichte sind, auf die der Zugriff über Telnet.

Das problem ist, wir überwachen möchten alle Standorten gleichzeitig und aktuell können wir nur überprüfen Sie Sie ein zu einer Zeit (über telnet).

Habe ich bereits gebaut, etwas, das Runtime.exec(String) zu senden Sie ping-Befehle, um jede IP-Adresse. Jetzt will ich aber in der Lage sein zu senden, die bestimmte Befehle automatisch mit dem Hersteller Diagnose-und reporting-tools. Irgendwelche Ideen auf dem besten Weg, dies zu tun? HINWEIS: wir haben ein hybrid-system - einige der Seiten sind hinter einer firewall einige sind nicht. Eine komplette Lösung wäre ideal, aber ich, der sich für einen teilweisen als auch.

Könnte es sein, so einfach wie immer der input-und output-streams des Process-Objekts zurückgegeben von der Runtime.exec(String) und senden Sie mir Befehle, um die Eingabe und das Lesen der Antwort auf die Ausgabe? Oder sollte ich eine Verbindung zu port 23 (dem üblichen telnet-port) und dann Verhalten sich wie jeder andere client-server-system. Oder etwas anderes völlig anderes?

Bin ich weiterhin ausprobieren, nur brainstorming an dieser Stelle...

CODE: (sensible Informationen entfernt)

void exec(String ip)
{
  Socket sock = null;
  BufferedReader br = null;
  PrintWriter pw = null;

  try
  {
    sock = new Socket(ip, 23);

    br = new BufferedReader(new InputStreamReader(sock.getInputStream()));
    pw = new PrintWriter(sock.getOutputStream());

    this.read(br);
    System.out.println("Sending username");
    pw.println("username");
    this.read(br);  //Always blocks here
    System.out.println("Sending password");
    pw.println("password");
    this.read(br);

    pw.close();
    br.close();
    sock.close();
  }
  catch(IOException e)
  {
    e.printStackTrace();
  }
}

void read(BufferedReader br) throws IOException
{
  char[] ca = new char[1024];
  int rc = br.read(ca);
  String s = new String(ca).trim();

  Arrays.fill(ca, (char)0);

  System.out.println("RC=" + rc + ":" + s);

//String s = br.readLine();
//     
//while(s != null)
//{
// if(s.equalsIgnoreCase("username:"))
//   break;
//         
// s = br.readLine();
//         
// System.out.println(s);
//}
InformationsquelleAutor BigMac66 | 2010-09-21
Schreibe einen Kommentar