Domanda

Sto facendo un Gradle / OSGi build.

Ho l'OSGi fascio costruzione di elegante, ma si vuole automatizzare la distribuzione bundle. Non credo che ci sia un compito Gradle per questo, quindi questa diventa una questione groove. Per distribuire ad un contenitore OSGi fate quanto segue:

  1. telnet alla porta container OSGi
  2. comando Invia ss per elencare i fasci
  3. analizzare fuori il bundle in questione
  4. disinstalla il pacchetto tramite una "disinstallazione [ID]" comando
  5. installare il pacchetto tramite un "file di installazione: percorso /// per impacchettare" url
  6. analizzare i risultati
  7. Chiudere la sessione telnet.

C'è un modo per telnet alla porta utilizzando i comandi Groovy e inviare e leggere l'output?

Grazie per qualsiasi aiuto, phil

È stato utile?

Soluzione

Non so su telnet, ma ho lavorato con Groovy e SSH utilizzando l'AntBuilder e il compito sshexec in questo modo:

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")

Si avrà bisogno la formica-jsch.jar e jsch-0.1.33.jar o superiore nel classpath.

Altri suggerimenti

Questo dovrebbe essere semplicemente fattibile con una presa normale e Stream Lettori / Writer. Telnet è solo un frontend per semplice presa I / O che sono protocolli basati testo.

Quindi, per fare i tuoi passi:

  • Crea una presa normale per l'host di destinazione / port
  • Scrivi "ss"
  • Crea un InputStreamReader
  • Consumare tutto a disposizione
  • Analizza per trovare il vostro id pacco
  • Invia "uninstall" + BundleID
  • Consumare il torrente fino a quando arriva prompt dei comandi / uninstall finito
  • Invia "file di installazione: // percorso /"
  • Consumare il torrente fino a quando arriva prompt dei comandi / install finito
  • socket.close ()

Sì, lo so questo assomiglia i passi che già scritto, ma dal momento che il telnet non è un vero e proprio protocollo, ma solo un frontend per prese di testo, questo dovrebbe essere facilmente fattibile per te stesso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top