代码之家  ›  专栏  ›  技术社区  ›  phil swenson

使用groovy自动化telnet

  •  0
  • phil swenson  · 技术社区  · 15 年前

    我正在进行GRADLE/OSGi构建。

    我有一个很好的OSGi包构建,但是我想自动化包部署。我不认为这是一个渐进的任务,所以这变成了一个绝妙的问题。要部署到OSGi容器,请执行以下操作:

    1. 到OSGi集装箱港口的telnet
    2. 发送ss命令列出捆绑包
    3. 解析有问题的包
    4. 通过“uninstall[id]”命令卸载捆绑包
    5. 通过“install file:///path to bundle”url安装bundle
    6. 分析结果
    7. 退出telnet会话。

    有没有一种方法可以使用groovy远程登录到端口,发送命令并读取输出?

    谢谢你的帮助, 菲尔

    2 回复  |  直到 8 年前
        1
  •  1
  •   Christoph Metzendorf    15 年前

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

        2
  •  0
  •   ZeissS    15 年前

    这应该可以通过一个普通的套接字和流读写器来实现。telnet只是基于文本协议的简单套接字I/O的前端。

    因此,要执行以下步骤:

    • 创建目标主机/端口的普通套接字
    • 写“SS”
    • 创建InputStreamReader
    • 消耗所有可用的资源
    • 解析以查找包ID
    • 发送“卸载”+bundleid
    • 使用流,直到命令提示到达/卸载完成
    • 发送“install file://path/”
    • 使用流,直到命令提示到达/安装完成
    • Socket()

    是的,我知道这类似于您已经编写的步骤,但是由于telnet不是一个真正的协议,而是一个前端到文本的套接字,所以您应该很容易做到这一点。

    推荐文章