使用Groovy自动化telnet

时间:2010-08-14 03:13:37

标签: groovy osgi gradle

我正在做gradle / OSGi构建。

我的OSGi捆绑包构建正常,但希望自动化捆绑部署。我不认为这有一个任务,所以这成为一个时髦的问题。要部署到osgi容器,请执行以下操作:

  1. telnet到OSGi容器端口
  2. 发送ss命令列出包
  3. 解析有问题的包
  4. 通过“uninstall [ID]”命令
  5. 卸载软件包
  6. 通过“install file:/// path to bundle”url
  7. 安装捆绑包
  8. 解析结果
  9. 退出telnet会话。
  10. 有没有办法使用Groovy telnet到端口并发送命令并读取输出?

    感谢您的帮助, 菲尔

2 个答案:

答案 0 :(得分:1)

我不知道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或更高版本。

答案 1 :(得分:0)

这应该只是普通套接字和流读取器/写入器。 Telnet只是基于文本协议的简单套接字i / o的前端。

所以,要做你的步骤:

  • 创建到目标主机/端口的正常套接字
  • 写“ss”
  • 创建inputstreamreader
  • 消费一切可用
  • 解析以查找您的包ID
  • 发送“uninstall”+ bundleId
  • 使用流直到命令提示符到达/卸载完成
  • 发送“install file:// path /”
  • 使用流直到命令提示符到达/安装完成
  • socket.close()

是的,我知道这类似于你已经写过的步骤,但由于telnet不是真正的协议,而只是文本套接字的前端,这对你自己来说应该很容易实现。