Pregunta

Estoy haciendo un Gradle / OSGi de construcción.

Tengo el paquete OSGi construir bien, pero desea automatizar el paquete de implementación. No creo que hay una tarea Gradle para esto, por lo que este se convierte en una cuestión maravilloso. Para desplegar en un contenedor OSGi hace lo siguiente:

  1. telnet al puerto de contenedores OSGi
  2. comando send ss para listar los paquetes
  3. analizar el paquete en cuestión
  4. desinstalación del haz a través de un "desinstalación [ID]" comando
  5. instalar el paquete a través de un "archivo de instalación: /// ruta al grupo" url
  6. analizar los resultados
  7. sesión de telnet salida.

¿Hay una manera de telnet a un puerto mediante comandos maravillosos y enviar y leer la salida?

Gracias por cualquier ayuda, Phil

¿Fue útil?

Solución

No sé acerca de telnet, pero trabajé con Groovy y SSH utilizando la AntBuilder y la tarea sshexec como esto:

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

Se necesitará la hormiga-jsch.jar y jsch-0.1.33.jar o superior en la ruta de clases.

Otros consejos

Esto debería ser simplemente factible con una toma de corriente normal y lectores / escritor. Telnet es sólo una sencilla interfaz gráfica para toma de E / S que son los protocolos basados ??en texto.

Por lo tanto, para hacer sus pasos:

  • Crear un enchufe normal al host de destino / puerto
  • Escribir "ss"
  • Crear un InputStreamReader
  • Consumir todo lo disponible
  • Analizar para encontrar su ID de paquete
  • Enviar "desinstalación" + BundleID
  • Consume la corriente hasta que llega símbolo del sistema / desinstalación terminado
  • Enviar "archivo de instalación: // ruta /"
  • Consume la corriente hasta que llegue la línea de comandos / Terminar la instalación
  • Socket.close ()

Sí, sé que esto se parece a los pasos que ya se escribió, pero ya no Telnet es un protocolo real, pero sólo una interfaz para tomas de texto, esto debería ser fácilmente factible por sí mismo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top