我正在做一个gradle/osgi构建。

我的OSGI捆绑式建筑物正常,但想自动化捆绑包部署。我认为这没有一个Gradle任务,因此这成为一个令人讨厌的问题。要部署到OSGI容器,请执行以下操作:

  1. 到OSGI容器端口
  2. 发送SS命令列出捆绑包
  3. 解析有问题的捆绑包
  4. 通过“卸载[id]”命令卸载捆绑包
  5. 通过“安装文件:///捆绑路径”安装捆绑包
  6. 解析结果
  7. 退出Telnet会话。

是否有一种方法可以使用Groovy并发送命令并阅读输出?

感谢您的帮助,菲尔

有帮助吗?

解决方案

我不知道Telnet,但是我使用Antbuilder和SSHEXEC任务与Groovy和SSH合作:

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

您将需要ant-jsch.jar和JSCH-0.1.33.JAR或更高的课堂路径。

其他提示

这应该简单地使用普通的插座和流读取器 /作家。 Telnet只是基于文本的协议的简单套接字I/O的前端。

因此,采取步骤:

  • 为目标主机/端口创建一个普通的插座
  • 写“ SS”
  • 创建一个InputStreamReader
  • 消费所有可用的东西
  • 解析以找到您的捆绑ID
  • 发送“卸载” +捆绑
  • 消耗流,直到命令提示到达 /卸载完成
  • 发送“安装文件://路径/”
  • 消耗流,直到命令提示到达 /安装完成
  • socket.close()

是的,我知道这类似于您已经写过的步骤,但是由于Telnet不是一个真正的协议,而只是文本插座的前端,所以这应该很容易对您自己做。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top