很多朋友都遇到了jmeter鏈接數據庫時需要ssh連服務器后才能連數據庫,分享下beanshell里ssh+jdbc用法。
另外也可以結合java請求來實現,包含javasampler以及jsch包
import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import java.sql.*; String user = "";//SSH連接用戶名 String password = "";//SSH連接密碼 String host = "";//SSH服務器 int port = ;//SSH訪問端口 try { JSch jsch = new JSch(); session = jsch.getSession(user, host, port); session.setPassword(password); session.setConfig("StrictHostKeyChecking", "no"); session.connect(); System.out.println(session.getServerVersion());//這里打印SSH服務器版本信息 int assinged_port = session.setPortForwardingL(3376,"mysqlip" ,mysqlport); //3376就是jdbc要用的端口 System.out.println("localhost:" + assinged_port + " -> " + mysqlip + ":" + mysqlport); } catch (Exception e) { e.printStackTrace(); }; Connection conn = null; ResultSet rs = null; Statement st = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3376/xhl_guild", "root", "12346"); //這里就寫localhost或者127.0.0.1 st = conn.createStatement(); String sql = "SELECT user_id,u_nickname from base_user where user_id =2;"; rs = st.executeQuery(sql); while (rs.next()){ System.out.println(rs.getInt(1)+"\t"+rs.getString(2));} } catch (Exception e) { e.printStackTrace(); } rs.close(); st.close(); conn.close(); session.disconnect();
為了方便寫了一個java請求的jar,用來ssh鏈接遠程服務器后跳板到mysql數據庫。

jar包放在ext目錄下,重啟jmeter。

如上圖填寫上對應的參數
lIp==本地ip地址(要映射的ip)
lPort==本地端口號
rIp==mysql服務器所在的ip
rPort==mysql服務所用的端口
sshIp=ssh要鏈接的服務器ip
sshPort==ssh服務器鏈接端口
sshUser==ssh服務器鏈接用戶名
sshPassword==ssh服務器鏈接密碼
mysqlUser==mysql數據庫連接用戶名
mysqlPassword==mysql數據庫連接密碼
db==數據庫名
sqlType==sql類型(默認select,可寫其他update等)
sql==sql語句
