将linux命令的值存储到groovy脚本中的变量(soapui)

时间:2017-05-30 06:37:37

标签: linux groovy soapui

我正在我的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。  我怎么能这样做?

1 个答案:

答案 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" 
)