Question

Je suis en train de faire un gradle / build OSGi.

J'ai la construction OSGi bundle bien, mais à automatiser le déploiement bundle. Je ne pense pas qu'il y ait une tâche gradle pour cela, donc cela devient une question groovy. Pour déployer un conteneur OSGi vous procédez comme suit:

  1. telnet au port de conteneur OSGi
  2. Envoyer commande ss à la liste des paquets
  3. analyser le paquet en question
  4. Désinstaller le paquet via une commande "Désinstaller [ID]"
  5. installer le paquet via un "fichier d'installation: /// chemin de paquet" url
  6. parse les résultats
  7. exit session telnet.

Y at-il un moyen de telnet à un port en utilisant les commandes Groovy et envoyer et de lire la sortie?

Merci pour toute aide, phil

Était-ce utile?

La solution

Je ne sais pas telnet, mais je travaille avec Groovy et SSH en utilisant la AntBuilder et la tâche sshexec comme ceci:

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

Vous aurez besoin des fourmis jsch.jar et jsch-0.1.33.jar ou plus dans votre classpath.

Autres conseils

Cela devrait être tout simplement faisable avec une prise normale et lecteurs / Writer Stream. Telnet est juste un frontend pour simple prise i / o qui sont des protocoles à base de texte.

Alors, pour faire vos étapes:

  • Créer une douille normale à l'hôte de destination / port
  • Ecrire "ss"
  • Créer un InputStreamReader
  • Consommez tout disponible
  • Parse pour trouver votre identifiant paquet
  • Envoyer "désinstaller" + BundleID
  • Consommez le flux jusqu'à ce que l'invite de commande arrive / désinstallation terminée
  • Envoyer "fichier d'installation: // chemin /"
  • Consommez le flux jusqu'à ce que l'invite de commande arrive / INSTALL terminé
  • Socket.close ()

Ouais, je sais que cela ressemble les étapes que vous avez déjà écrit, mais comme telnet est pas un vrai protocole, mais juste un frontend à des prises de texte, cela devrait être facilement réalisable pour vous.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top