Frage

Ich mache einen gradle / OSGi zu bauen.

Ich habe die OSGi-Bundle feine Gebäude, will aber das Bündel Bereitstellung automatisieren. Ich glaube nicht, dass es eine gradle Aufgabe dafür ist, so ist dies eine groovy Frage wird. So implementieren zu einem OSGi-Container tun Sie Folgendes:

  1. telnet auf den OSGi-Container Port
  2. Senden ss Befehl die Pakete zur Liste
  3. analysieren, das Bündel in Frage
  4. uninstall das Bündel über einen "uninstall [ID]" Befehl
  5. Installieren Sie das Paket über einen: url
  6. „Datei installiert /// Pfad zu bündeln“
  7. Parse die Ergebnisse
  8. exit Telnet-Sitzung.

Gibt es eine Möglichkeit zu Telnet zu einem Port mit Groovy und senden Befehle und die Ausgabe lesen?

Vielen Dank für jede Hilfe, phil

War es hilfreich?

Lösung

Ich weiß nicht, über Telnet, aber ich arbeitete mit Groovy und SSH die AntBuilder verwenden und die sshexec Aufgabe wie folgt:

class SshClient {

    def host
    def username
    def password


    def execute (def command) {
        def ant = new AntBuilder()
        ant.sshexec(host : host,
                    username : username,
                    password : password,
                    command : command,
                    trust : "true",
                    outputproperty : "result")

        return ant.project.properties."result"
    }
}

def ssh = new SshClient ( host: "myhost",
                          username : "myuser",
                          password : "secret")

println ssh.execute("ls")

Sie müssen die Ameisen jsch.jar und jsch-0.1.33.jar oder höher in Ihrem Classpath.

Andere Tipps

Dies sollte mit einer normalen Steckdose und Stream-Leser / Schreiber einfach machbar sein. Telnet ist nur ein Frontend für einfache Socket-I / O, die textbasierte Protokolle sind.

Also, um Ihre Schritte zu tun:

  • Erstellen Sie eine normale Steckdose zum Ziel-Host / Port
  • Write "ss"
  • Erstellen Sie eine Input
  • Verbrauchen alles verfügbar
  • Parse Ihre Bündel-ID finden
  • Senden "uninstall" + bund
  • Verbrauchen des Stroms, bis Eingabeaufforderung eintrifft / Deinstallation beendet
  • Senden "install file: // path /"
  • Verbrauchen des Stroms, bis Eingabeaufforderung eintrifft / Installation beendet
  • socket.close ()

Ja, ich weiß, das erinnert an die Schritte, die Sie bereits geschrieben, aber da telnet kein wirkliches Protokoll ist, sondern nur ein Frontend für Text Steckdosen, sollten diese für sich selbst leicht machbar sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top