求用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代码例子...相关推荐

  1. win7任务栏出现计算机网络连接怎么办,win7任务栏网络图标显示未连接 连接不可用解决方法...

    刚装完 U盘版win7系统 时,大家会发现一个头疼的问题,就是无法上网,那该怎么办呢?检查网络发现,一个很奇怪的现象,那么就是win7系统任务栏网络图标显示"未连接 - 连接不可用" ...

  2. linux ssh连接交换机_访问SMB交换机CLI使用SSH或远程登录

    访问SMB交换机CLI使用SSH或远程登录 客观 Cisco小型企业被管理的交换机可以通过命令行界面(CLI)远程访问和被配置.访问CLI在一个基于终端的窗口允许命令被输入.如果喜欢配置使用在您的交换 ...

  3. ORM框架Peewee六(连接池、主从、重连、ssh连接)

    一.peewee连接池 from peewee import *from playhouse.pool import PooledMySQLDatabase, PooledDatabasePooled ...

  4. 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 使用上述的三 ...

  5. 云开发连接mysql_微信小程序云开发—云函数连接MySQL

    微信小程序云开发-云函数连接MySQL 直接上干货,主要是利用微信的云函数和Sequelize 进行连接外部MySQL ,本文章主要讲述: MySQL MySQL 拉取我的代码或则创建一个新的云开发小 ...

  6. 主机ssh升级到6.7以上版本后,使用jsch jar包ssh连接不上报Algorithm negotiation fail问题的解决办法

    文章目录 一. 解决方案 1. 添加加密算法 2. 升级版本 3. 回退版本 4. j2ssh.jar方式替代jsch 5. jsch版本下载列表 一. 解决方案 1. 添加加密算法 ssh连接问题是 ...

  7. java连接sql server数据库的代码如何改成连接mysql_连接sqlserver数据库代码

    Sql Server的JDBC测试程序与远程连接 参考文献: 1.MySql与oracle的JDBC测试程序 2.查看sqlserver的端口号 代码示例 在我的机器上安装了多个版本的sqlserve ...

  8. kali虚拟网络的三种常用连接模式的原理

    1.打开虚拟机的网络设置,可以看到网络连接有多种模式选择 2.在Windows主机上,打开cmd,输入ipconfig,查看主机ip信息,还可以看到VMnet1.VMnet8,先记下他们的ip信息 3 ...

  9. sql+plus远程连接mysql_设置sqlplus访问远程oracle数据库的方法

    如果要连接远程数据库,传统的一定可行的方法是在本地装一个oracle,然后使用"Network Configuration Assistant"配置,之后用PL/SQL Dev连接 ...

最新文章

  1. 使用PHP对数据库输入进行恶意代码清除
  2. ev3dev:设置自动登录wifi
  3. 栈在前端中的应用,顺便再了解下深拷贝和浅拷贝!
  4. sqlplus中清理屏幕语句_sqlplus的小秘密[转]
  5. python 使窗口前置
  6. 流媒体服务器搭建详解
  7. scrollLeft,scrollTop,滚动代码的总结
  8. python基础之迭代器、生成器、装饰器
  9. 疫情下,嵌入式er该怎么进行职业规划,难点在哪?
  10. IDEA切换主题(换背景颜色)
  11. 【文本挖掘】关键词提取
  12. 温习古文之生于忧患,死于安乐
  13. 《大话数据结构》参考
  14. QQ浏览器网页版微信抓包和IPAD微信抓包 Wireshark
  15. [转]大规模服务设计部署经验谈
  16. 怎么调用计算机cad,CAD电脑版怎么使用教程
  17. DesignWare USB 2.0 OTG Controller (DWC_otg) Device Driver File List
  18. jmeter 报405错误_get请求400错误,post请求405错误
  19. 谷歌浏览器在新页面打开_如何在Google文档中更改页面方向
  20. 白告王旋的前端开发笔记——性能优化

热门文章

  1. PHP经典文:服务容器
  2. CSS选取第n个元素 :nth-child()
  3. Bug之本地可以发送邮件 测试服不行
  4. 获取MySQL数据库表结构的信息(字段名,字段类型,注释等)
  5. 微信小程序-当用户拒绝了位置信息的请求时,提醒用户去设置地理位置授权
  6. 简易HTTP协议解析
  7. HTTPS 原理详解
  8. 信息时代计算机应用技术,计算机应用技术
  9. mysql chroot_在chroot环境下将MySQL日志输出到syslog
  10. mysql使用索引扫描做排序_「Mysql索引原理(八)」使用索引扫描做排序