今天發現一個非常好的Jar包,純Java實現SSH連接:jsch-0.1.41.jar。
只要能向Linux伺服器發送命令並拿到其返回值,那麼可以做的事情就有很多了。譬如直接使用Shell、寫好一個腳本放在伺服器上讓你調。
下面為LoadRunner的JavaVuser代碼,收集Linux系統的系統負載,並生成自訂圖表:
只要能向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
}
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,很好 很強大!
因為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,很好 很強大!
沒有留言:
張貼留言