今天发现一个非常好的Jar包,纯Java实现SSH连接: jsch-0.1.41.jar。
只要能向Linux服务器发送命令并拿到其返回值,那么可以做的事情就有很多了。譬如直接使用Shell、写好一个脚本放在服务器上让你调。
下面为LoadRunner的JavaVuser代码,收集Linux系统的系统负载,并生成自定义图表:
import lrapi.*;
import com.jcraft.jsch.*;
import java.io.InputStream;
public class Actions
{
String mUserName = "higkoo";
String mHostName = "192.168.10.31";
String mPwd = "123456";
String mCommand = "uptime | awk -F\" \" '{print $12}'";
public int init() throws Throwable {
return 0;
}//end of init
public int action() throws Throwable {
try{
JSch jsch=new JSch();
Session session=jsch.getSession(mUserName, mHostName, 22);
session.setPassword(mPwd);
session.setConfig("StrictHostKeyChecking", "no");
session.connect(30000); // making a connection with timeout.
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(mCommand);
InputStream in = channel.getInputStream();
channel.connect();
int nextChar;
StringBuffer sb = new StringBuffer();
while(true){
while ((nextChar = in.read()) != -1) {
sb.append((char) nextChar);
}
if (channel.isClosed()) {
System.out.println("exit-status: "
+ channel.getExitStatus());
break;
}
try {
Thread.sleep(1000);
} catch (Exception ee) {
System.out.println(ee.getMessage());
}
}
lr.user_data_point( "Load Avg" , Double.parseDouble(sb.toString()) ); //Data Point
channel.disconnect();
session.disconnect();
}catch(Exception e){
System.out.println(e);
}
return 0;
}//end of action
public int end() throws Throwable {
return 0;
}//end of end
}
当然,这个脚本只是随便举了个例子,剩下的就由你发挥了!
因为LoadRunner的JavaVuser才开始了解Java,Java真的很强大!起初需要使用LR做一些复杂一点的事情,必须调用DLL完成。不会C++,每次要实现什么功能都得请战友帮忙实现。对代码不太感冒的我,要将性能测试进行到底,不得不去了解程序本身。Java的开源、跨平台,Linux开源、稳定,相关的程序、组件也不断被人们接受和壮大。话题扯远了,谈谈LR与Java吧。
LR的JavaVuser可以直接运行Java程序,而且还可以使用LR自带的Java运行库,非常好用!
方法:“File”菜单——“Add Files to Script”,然后在脚本开始前添加import引用,即可调用其中的方法。
不足的是,LR的编辑器不好用,但是可以在其它编辑器写好代码后再拷过来。LR支持Jar包的调用,可以把写好的程序打包起来以供调用。调用Jar的功能也有个不足:只能调用第一层Jar包,不能调用“包中包”。
如果项目使用Java开发,测试到一些不容易实现的功能时,可以直接让开发提供一个Jar包来用。因为这些功能开发都已经实现了,不需要额外的开发成本,一定程度上保证了一致性。
关于本篇讲到的ssh连接Linux,只是陈述了一个思路,核心就是靠Java实现。用其它语言来包装LR,很好 很强大!
http://hi.baidu.com/higkoo/item/4891198b0a684f55e63d19d8