我正在我的soapui断言中执行以下groovy脚本,其中我试图将linux命令的输出值存储到变量中,以便我将linux命令的输出与期望值进行比较。我的groovy如下所示< / p>
import groovy.sql.Sql
import java.sql.DriverManager
import java.sql.Connection
import javax.sql.DataSource
import java.sql.Driver;
import java.util.*;
import java.text.*;
// Executing Script to capture logs
log.info "Executing Script to capture logs"
import java.lang.Object
import com.jcraft.jsch.JSch
import com.jcraft.jsch.Session
import com.jcraft.jsch.UserInfo
import com.jcraft.jsch.Channel
import com.jcraft.jsch.ChannelExec
import java.util.Properties
def sshHost = context.expand('${#Project#Kcom}');
def sshUser = 'sshuser'
def sshPass = 'sshpass'
def sshPort = port value
/////////////////////////////
log.info "Opening connection to ${sshUser}@${sshHost}:${sshPort}"
Properties config = new Properties()
config.put("StrictHostKeyChecking", "no")
JSch jsch = new JSch()
///////////////////////////
Session s = jsch.getSession(sshUser, sshHost, sshPort)
s.setPassword(sshPass)
s.setConfig(config)
s.connect()
log.info "Connected"
Channel c = s.openChannel("exec");
ChannelExec ce = (ChannelExec) c;
def logerror = ce.setCommand("tail -50 <log file> | grep -i 'some string'");
log.info logerror
ce.setErrStream(System.err);
ce.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(ce.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
log.info(line);
}
这里logerror总是返回null。 我怎么能这样做?
答案 0 :(得分:1)
我不知道您的代码有什么问题,我只知道ant命令sshexec可以满足您的需求。
所以,您可以通过sources
了解如何正确执行此操作 ps:我知道soapui包含有限groovy-all.jar
但是如果你能够将完整的groovy库列表添加到soapui类路径中,那么就可以使用groovy.lang.AntBuilder()
:
def ant = new AntBuilder()
ant.sshexec(
host:"somehost",
username:"dude",
password:"yo",
command:"tail -50 <log file> | grep -i 'some string'",
output: "path/to/local/output/file"
)