Ich arbeite für eine große Organisation, die viele verschiedene Standorte in einem landesweiten Netzwerk unterstützt. Unser Lieferant liefert Diagnosetools für die Hardware, die wir an jedem Standort verwenden. Auf die Diagnose und Berichte wird über Telnet zugegriffen.
Das Problem ist, dass wir alle Sites gleichzeitig überwachen wollen und derzeit können wir sie nur einzeln (per Telnet) überprüfen.
Ich habe bereits etwas erstellt, das Runtime.exec(String)
verwendet, um Ping-Befehle an jede IP-Adresse zu senden. Aber jetzt möchte ich in der Lage sein, bestimmte Befehle automatisch mit den Diagnose- und Berichtstools des Herstellers zu senden. Irgendwelche Ideen über den besten Weg, dies zu tun? HINWEIS: Wir haben ein hybrides System - einige der Sites sind hinter einer Firewall, andere nicht. Eine vollständige Lösung wäre ideal, aber ich werde mich auch für eine Teillösung entscheiden.
Könnte es so einfach sein, die Eingabe- und Ausgabeströme des Process-Objekts zu erhalten, das von Runtime.exec(String)
zurückgegeben wurde, und meine Befehle an die Eingabe zu senden und die Antwort auf der Ausgabe zu lesen? Oder sollte ich eine Verbindung zu Port 23 (dem üblichen Telnet-Port) herstellen und mich dann wie jedes andere Client-Server-System verhalten? Oder etwas ganz anderes?
Ich probiere die Dinge weiter aus, brainstormiere an dieser Stelle ...
CODE: (sensible Informationen entfernt)
%Vor%Warum benutzen Sie nicht einfach das Socket-System?
Öffnen Sie einen Socket für den ausgewählten Server an Port 23 und senden Sie Ihre eigenen Befehle von hier.
Hier ist ein kurzes Beispiel:
%Vor%Ressourcen:
Das Problem beim Herunterfahren auf der Socket-Ebene ist, dass Sie plötzlich ein Protokoll-Experte sein müssen, wenn Sie nur ein paar Telnet-Befehle brauchen.
Ich habe einen Treiber oben auf de.mud.jta geschrieben, aber es bleiben Threads offen, und ich weiß nicht wo und wie man diese behebt. Es scheint mir, dass es da draußen etwas Besseres geben muss, als auf Protokollebene oder dieses alte JTA-Zeug zu kodieren.
telnet ist fast blankes tcp. Sie können wahrscheinlich eine Socket-Verbindung herstellen, Befehle schreiben, Antworten lesen.
well - Telnet hat einige Steuerbefehle, die mit dem Datenstrom gemischt werden können. Sie können wahrscheinlich programmieren, um sie zu ignorieren. oder verwenden Sie ein Java-Telnet-Client-Paket, um vollkommen Protokoll-bewusst zu sein.
Expect ist eine Skript-Möglichkeit (nicht Java). Es ist ein älteres Tool, sehen Sie die Vor- und Nachteile bei Wikipedia .
Versuchen Sie, Netty Java Library zu überprüfen. Sie haben eine gute Menge von Telnet, SSH und andere sehr nützliche Netzwerkbibliothek