我正在做一个 gradle/OSGi 构建。
我的 OSGi 包构建良好,但想要自动化包部署。我不认为这有一个 gradle 任务,所以这成为一个时髦的问题。要部署到 osgi 容器,请执行以下操作:
- telnet 到 OSGi 容器端口
- 发送 ss 命令列出捆绑包
- 解析出有问题的捆绑包
- 通过“卸载 [ID]”命令卸载捆绑包
- 通过“安装文件:///路径到包”url安装包
- 解析结果
- 退出远程登录会话。
有没有办法使用 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 的前端。
所以,做你的步骤:
是的,我知道这类似于您已经编写的步骤,但是由于 telnet 不是真正的协议,而只是文本套接字的前端,因此您自己应该很容易做到这一点。