JSch (Java Secure Channel)是纯Java的SSH2实现。可以把它集成到你的Java应用中来连接sshd服务器,执行指令(port forward, file transfer, terminal emulation)。Ant、Eclipse-CVSSSH2、NetBeans等工具都在使用它。如果你的服务部署在linux服务器中,有时你需要执行一些系统命令,这时候需要用到Runtime.getRuntime().exec("java -version"); 但是这样会让你的服务器内存瞬间增长很多。JSch基于JavaTM Cryptography Extension(JCE)通过Socket来实现通信,可以大大减少内存的暴涨。

http://www.jcraft.com/

版本:jsch-0.1.51.jar

SSH例子:

public void ssh() throws Exception {

JSch jsch = new JSch();

// connect session

Session session = jsch.getSession(USER_ID, HOST_NAME, 22);

session.setPassword(PASSWORD);

session.setConfig("StrictHostKeyChecking", "no");

session.connect();

// exec command remotely

String command = "ls -l";

ChannelExec channel = (ChannelExec) session.openChannel("exec");

channel.setCommand(command);

channel.connect();

// get stdout

InputStream in = channel.getInputStream();

byte[] tmp = new byte[1024];

while (true) {

while (in.available() > 0) {

int i = in.read(tmp, 0, 1024);

if (i < 0)

break;

System.out.print(new String(tmp, 0, i));

}

if (channel.isClosed()) {

System.out.println("exit-status: " + channel.getExitStatus());

break;

}

try {

Thread.sleep(1000);

} catch (Exception ee) {

}

}

channel.disconnect();

session.disconnect();

}

SFTP例子:

public void sftp() throws Exception {

JSch jsch = new JSch();

// connect session

Session session = jsch.getSession(USER_ID, HOST_NAME, 22);

session.setPassword(PASSWORD);

session.setConfig("StrictHostKeyChecking", "no");

session.connect();

// sftp remotely

ChannelSftp channel = (ChannelSftp) session.openChannel("sftp");

channel.connect();

// ls

Vector list = channel.ls(".");

System.out.println("---- ls");

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i));

}

// lstat

try {

SftpATTRS stat = channel.lstat("index.html");

System.out.println("---- lstat");

System.out.println(stat);

System.out.println(stat.getSize());

} catch (SftpException ex) {

ex.printStackTrace();

}

// get

channel.get("./index.html", "./index.html.dst");

// put

channel.put(new FileInputStream("c:/test.txt"), "test_new.txt");

channel.disconnect();

session.disconnect();

}

其他的工具还有:

Ganymed SSH-2:

https://code.google.com/p/ganymed-ssh-2/

sshj :

https://github.com/shikhar/sshj

Apache SSHD:

http://mina.apache.org/sshd-project/

java执行 scp_Java执行SSH/SCP之JSch相关推荐

  1. 一个Java Web后台任务执行工具的设计与实现

    一个Java Web后台任务执行工具的设计与实现 提到后台任务,最容易想到的恐怕就是Java 中的Timer或者大名鼎鼎的开源定时器Quartz,但是,从本质讲,他们都是定时器,以时间间隔严格的进行间 ...

  2. Java操作Kafka执行不成功

    使用kafka-clients操作kafka始终不成功,原因不清楚,下面贴出相关代码及配置,请懂得指点一下,谢谢! 环境及依赖 <dependency><groupId>org ...

  3. “Java是编译执行的语言”这句话对吗?

    现在让你谈谈对Java平台的理解,你是否会感觉内容过于庞大?这个问题是比较宽泛的,Java发展到现在已经不仅仅是语言这么简单了,Java平台涉及的,包括但不仅限于下面提到的这些内容: Java语言本身 ...

  4. java代码块执行顺序_Java笔记 | Java代码块执行顺序测试

    最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下. 如有错漏,希望路过的大佬指出来,以便我进行更改. 先上代码吧! public class ClassA { ...

  5. JAVA 文件编译执行与虚拟机(JVM)简单介绍

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...

  6. java调用、执行groovy代码

    java调用.执行groovy代码 1: package test; 2: 3: import javax.script.ScriptEngine; 4: import javax.script.Sc ...

  7. java数据库编程——执行SQL 语句

    [0]README 1) 本文文字描述+source code 均转自 core java volume 2 , 旨在理解 java数据库编程--执行SQL 语句 的基础知识 : 2)for sour ...

  8. java并发任务执行_Java并发性-任务反馈

    java并发任务执行 从我 上一篇 关于java.util.concurrent包的 文章 的结尾处 摘下来 ,这很有趣,有时甚至必须在并发任务启动后从它们那里获得反馈. 例如,假设一个应用程序必须发 ...

  9. Java 的混合执行模式

    导航 解释执行与编译执行 总结 解释执行与编译执行 Java 虽然是先编译再运行,但实际上,对于 JVM 来说,依然是逐条解释执行字节码文件中的指令,即大部分情况下,Java 都是解释执行的. JVM ...

最新文章

  1. 8086汇编学习笔记10-端口
  2. python3 string
  3. zdal配置文件_Autofac的基本使用---4、使用Config配置
  4. .net httpwebrequest 并发慢_go语言并发之MPG模型
  5. 证监会依法对4宗案件作出行政处罚
  6. android:inputType参数类型说明
  7. 用牛顿法求方程的根的c语言编程,用牛顿迭代法和二分法求方程的根【C语言】...
  8. 公司有代理 虚拟机安装ubuntu不能上外网
  9. 一个博友的SQL问题解决过程
  10. mybatis中Mapper映射
  11. 结构光三维重建阶段性总结
  12. 外贸企业域名邮箱怎么申请?
  13. window7电脑屏幕亮度调节的方法
  14. fatal: unable to connect to gitlab.domian: gitlab.domian : Temporary failure in name resolution
  15. .mat文件转TIF图片文件,python代码
  16. windows下ping特定端口
  17. 如何在华为云软件开发云上运行Python
  18. RaspBerry Pi 系统安装——Raspbian(精简版)
  19. android 横竖屏坐标转换,Android 屏幕横竖切换详解
  20. 编写CSDN博客,如何去掉插入的图片上的水印

热门文章

  1. DB2一个嵌套循环的sql
  2. Spring boot与Quartz实现任务定时提醒
  3. Python使用Plotly绘图工具,绘制面积图
  4. 文件系统的简单的操作
  5. typecho 调用评论最多热门文章
  6. 微信扫码登录实现原理
  7. canvas的基础使用。
  8. HDU 3240 Counting Binary Trees 数论-卡特兰数
  9. ffmpeg 编译成功,Mark一下
  10. AndroidStudio安卓原生开发_activity之间复杂对象类型的数据传递---Android原生开发工作笔记92