题
我正在做一个gradle/osgi构建。
我的OSGI捆绑式建筑物正常,但想自动化捆绑包部署。我认为这没有一个Gradle任务,因此这成为一个令人讨厌的问题。要部署到OSGI容器,请执行以下操作:
- 到OSGI容器端口
- 发送SS命令列出捆绑包
- 解析有问题的捆绑包
- 通过“卸载[id]”命令卸载捆绑包
- 通过“安装文件:///捆绑路径”安装捆绑包
- 解析结果
- 退出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不是一个真正的协议,而只是文本插座的前端,所以这应该很容易对您自己做。
不隶属于 StackOverflow