很多朋友都遇到了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.1st = 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语句