jsch连接mysql_求用jsch网络工具包通过ssh连接远程oracle数据库并发送sql操作语句(数据库在unix上)java代码例子...
求用jsch网络工具包通过ssh连接远程oracle数据库(数据库在unix上)java代码例子:为何jsch发送:sqlplususer/pwd@service此命令,却没有结果返回啊。下面是代码:publicclassSSHClienti...
求用jsch网络工具包通过ssh连接远程oracle数据库(数据库在unix上)java代码例子: 为何jsch发送:sqlplus user/pwd@service 此命令,却没有结果返回啊。下面是代码:
public class SSHClient implements ConnClient {
private Logger log=Logger.getLogger(SSHClient.class);
private int sessiontimeout = 6000;
private String addr;
private int port = 22;
private String username;
private String password;
Session session = null;
Channel channel = null;
ChannelExec execChannel = null;
public SSHClient(String addr) {
this.addr = addr;
}
public SSHClient(String addr, int port) {
this.addr = addr;
this.port = port;
}
public boolean connect(String username, String password) {
JSch jsch = new JSch();
try {
session = jsch.getSession(username, addr, port);
session.setUserInfo(new MyUserInfo(password));
session.setConfig("StrictHostKeyChecking", "no");
// session.setPassword(password);
session.connect(sessiontimeout);
} catch (JSchException e) {
log.error("SSHClient Connect Error :"+e.getMessage());
return false;
}
return true;
}
public String execcmd(String cmd) {
try {
channel = session.openChannel("exec");
execChannel = (ChannelExec) channel;
execChannel.setCommand(cmd);
execChannel.connect();
BufferedReader fromServer;
fromServer = new java.io.BufferedReader(new InputStreamReader(
(execChannel.getInputStream())));
StringBuffer sb = new StringBuffer();
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
// while (fromServer.ready()) {
// String tt = fromServer.readLine();
// sb.append(tt + '\n');
// }
String tt=null;
while ((tt=fromServer.readLine())!=null) {
sb.append(tt + '\n');
}
fromServer.close();
return sb.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
execChannel.disconnect();
}
}
public void close() {
if (session != null) {
session.disconnect();
}
}
/**
* @param args
*/
public static void main(String[] args) {
SSHClient ssh = new SSHClient("192.168.4.126", 22);
ssh.connect("abc", "abc");
String ret = ssh.execcmd("ps -ef|grep java ");//这个可以返回结果,但连接oracle数据库sqlplus命令却无结果显示
System.out.println(ret);
ssh.close();
}
public static class MyUserInfo implements UserInfo {
MyUserInfo(String password){
this.passwd=password;
}
String passwd = null;
public String getPassword() {
return passwd;
}
public boolean promptYesNo(String str) {
return true;
}
public String getPassphrase() {
return null;
}
public boolean promptPassphrase(String message) {
return true;
}
public boolean promptPassword(String message) {
return true;
}
public void showMessage(String message) {
}
}
}
=======================问题我已解决
可以将要执行的oracle查询写到shell脚本中:
#!/bin/bash
. ${HOME}/.profile
sqlplus -s xx/yy@lc8 <
set linesize 1000;
select * from mon_type;
quit
!
然后读取此脚本转为字符串,
String cmdValue =readFile();
String ret = client.execcmd(cmdValue);
System.out.println("["+ret+"]");
这样就有返回结果了。
或者:
注意发送的shell命令的写法:注意加上环境配置的profile,并且以\n换行
String cmdValue = "cd;. ${HOME}/.profile;sqlplus monitor/monitor@lcims8 <
String ret = client.execcmd(cmdValue);
这样ret就有结果返回了。
sysbase写法:
cmdValue="cd;. ${HOME}/.profile;isql -Uxx -Pyy -SUSER_SERVER7 -w400<
select top 2 * from M_C00\ngo";
展开
jsch连接mysql_求用jsch网络工具包通过ssh连接远程oracle数据库并发送sql操作语句(数据库在unix上)java代码例子...相关推荐
- win7任务栏出现计算机网络连接怎么办,win7任务栏网络图标显示未连接 连接不可用解决方法...
刚装完 U盘版win7系统 时,大家会发现一个头疼的问题,就是无法上网,那该怎么办呢?检查网络发现,一个很奇怪的现象,那么就是win7系统任务栏网络图标显示"未连接 - 连接不可用" ...
- linux ssh连接交换机_访问SMB交换机CLI使用SSH或远程登录
访问SMB交换机CLI使用SSH或远程登录 客观 Cisco小型企业被管理的交换机可以通过命令行界面(CLI)远程访问和被配置.访问CLI在一个基于终端的窗口允许命令被输入.如果喜欢配置使用在您的交换 ...
- ORM框架Peewee六(连接池、主从、重连、ssh连接)
一.peewee连接池 from peewee import *from playhouse.pool import PooledMySQLDatabase, PooledDatabasePooled ...
- apachecommon连接mysql_使用 apache common dbcp +common pool+mysql连接无效的问题
${db.driver} ${db.url} ${db.user} ${db.password} 100 50 10000 3600000 true select 1 from dual 使用上述的三 ...
- 云开发连接mysql_微信小程序云开发—云函数连接MySQL
微信小程序云开发-云函数连接MySQL 直接上干货,主要是利用微信的云函数和Sequelize 进行连接外部MySQL ,本文章主要讲述: MySQL MySQL 拉取我的代码或则创建一个新的云开发小 ...
- 主机ssh升级到6.7以上版本后,使用jsch jar包ssh连接不上报Algorithm negotiation fail问题的解决办法
文章目录 一. 解决方案 1. 添加加密算法 2. 升级版本 3. 回退版本 4. j2ssh.jar方式替代jsch 5. jsch版本下载列表 一. 解决方案 1. 添加加密算法 ssh连接问题是 ...
- java连接sql server数据库的代码如何改成连接mysql_连接sqlserver数据库代码
Sql Server的JDBC测试程序与远程连接 参考文献: 1.MySql与oracle的JDBC测试程序 2.查看sqlserver的端口号 代码示例 在我的机器上安装了多个版本的sqlserve ...
- kali虚拟网络的三种常用连接模式的原理
1.打开虚拟机的网络设置,可以看到网络连接有多种模式选择 2.在Windows主机上,打开cmd,输入ipconfig,查看主机ip信息,还可以看到VMnet1.VMnet8,先记下他们的ip信息 3 ...
- sql+plus远程连接mysql_设置sqlplus访问远程oracle数据库的方法
如果要连接远程数据库,传统的一定可行的方法是在本地装一个oracle,然后使用"Network Configuration Assistant"配置,之后用PL/SQL Dev连接 ...
最新文章
- 使用PHP对数据库输入进行恶意代码清除
- ev3dev:设置自动登录wifi
- 栈在前端中的应用,顺便再了解下深拷贝和浅拷贝!
- sqlplus中清理屏幕语句_sqlplus的小秘密[转]
- python 使窗口前置
- 流媒体服务器搭建详解
- scrollLeft,scrollTop,滚动代码的总结
- python基础之迭代器、生成器、装饰器
- 疫情下,嵌入式er该怎么进行职业规划,难点在哪?
- IDEA切换主题(换背景颜色)
- 【文本挖掘】关键词提取
- 温习古文之生于忧患,死于安乐
- 《大话数据结构》参考
- QQ浏览器网页版微信抓包和IPAD微信抓包 Wireshark
- [转]大规模服务设计部署经验谈
- 怎么调用计算机cad,CAD电脑版怎么使用教程
- DesignWare USB 2.0 OTG Controller (DWC_otg) Device Driver File List
- jmeter 报405错误_get请求400错误,post请求405错误
- 谷歌浏览器在新页面打开_如何在Google文档中更改页面方向
- 白告王旋的前端开发笔记——性能优化