Java中com.jcraft.jsch.ChannelSftp讲解

http://blog.csdn.net/allen_zhao_2012/article/details/7941631

http://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html

http://xpenxpen.iteye.com/blog/2061869

http://blog.csdn.net/fyqcdbdx/article/details/23863793

http://blog.csdn.net/u013256816/article/details/52701563?utm_source=gold_browser_extension

SFTP是Secure File Transfer Protocol的缩写,安全文件传送协议。可以为传输文件提供一种安全的加密方法。SFTP 为 SSH的一部份,是一种传输文件到服务器的安全方式。SFTP是使用加密传输认证信息和传输的数据,所以,使用SFTP是非常安全的。但是,由于这种传输方式使用了加密/解密技术,所以传输效率比普通的FTP要低得多,如果您对网络安全性要求更高时,可以使用SFTP代替FTP。

ChannelSftp类是JSch实现SFTP核心类,它包含了所有SFTP的方法,如:

put():      文件上传

get():      文件下载

cd():       进入指定目录

ls():       得到指定目录下的文件列表

rename():   重命名指定文件或目录

rm():       删除指定文件

mkdir():    创建目录

rmdir():    删除目录

等等(这里省略了方法的参数,put和get都有多个重载方法,具体请看源代码,这里不一一列出。)

一个简单的jsch链接Linux并执行命令的utils。

  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5. import com.jcraft.jsch.Channel;
  6. import com.jcraft.jsch.ChannelExec;
  7. import com.jcraft.jsch.JSch;
  8. import com.jcraft.jsch.JSchException;
  9. import com.jcraft.jsch.Session;
  10. public class ShellUtils {
  11. private static JSch jsch;
  12. private static Session session;
  13. /**
  14. * 连接到指定的IP
  15. *
  16. * @throws JSchException
  17. */
  18. public static void connect(String user, String passwd, String host) throws JSchException {
  19. jsch = new JSch();
  20. session = jsch.getSession(user, host, 22);
  21. session.setPassword(passwd);
  22. java.util.Properties config = new java.util.Properties();
  23. config.put("StrictHostKeyChecking", "no");
  24. session.setConfig(config);
  25. session.connect();
  26. }
  27. /**
  28. * 执行相关的命令
  29. * @throws JSchException
  30. */
  31. public static void execCmd(String command, String user, String passwd, String host) throws JSchException {
  32. connect(user, passwd, host);
  33. BufferedReader reader = null;
  34. Channel channel = null;
  35. try {
  36. while (command != null) {
  37. channel = session.openChannel("exec");
  38. ((ChannelExec) channel).setCommand(command);
  39. channel.setInputStream(null);
  40. ((ChannelExec) channel).setErrStream(System.err);
  41. channel.connect();
  42. InputStream in = channel.getInputStream();
  43. reader = new BufferedReader(new InputStreamReader(in));
  44. String buf = null;
  45. while ((buf = reader.readLine()) != null) {
  46. System.out.println(buf);
  47. }
  48. }
  49. } catch (IOException e) {
  50. e.printStackTrace();
  51. } catch (JSchException e) {
  52. e.printStackTrace();
  53. } finally {
  54. try {
  55. reader.close();
  56. } catch (IOException e) {
  57. e.printStackTrace();
  58. }
  59. channel.disconnect();
  60. session.disconnect();
  61. }
  62. }
  63. }

原文地址:https://www.cnblogs.com/weiyi1314/p/9517245.html

时间: 2024-10-14 13:27:43

Java中com.jcraft.jsch.ChannelSftp讲解的相关文章

Java中使用jcraft进行SFTP的上传下载

如果大家熟悉Linux的话,一定对ssh,sftp,scp等命令非常熟悉.ssh是一个安全协议,用来在不同系统或者服务 器之间进行安全连接.ssh 在连接和传送的过程中会加密所有的数据.具体的解释,大家可以参考百度百科的文 档.地址为:http://baike.baidu.com/view/16184.htm 但是SSH一般是基于客户端的或者Linux命令行的.比如客户端的工具:OpenSSH,putty,SSH Tectia:在linux上大家可以通过ssh [email protected]

java中Integer包装类的详细讲解(java二进制操作,所有进制转换)

程序员都很懒,你懂的! 今天为大家分享的是Integer这个包装类.在现实开发中,我们往往需要操作Integer,或者各种进制的转换等等.我今天就为大家详细讲解一下Integer的使用吧.看代码: package com.herman.test; public class IntegerTest { public static void main(String[] args) { System.out.println("Integer中的常量***************************

关于java中getClass()和getSuperClass()的讲解

为了讲解这个问题,我们先来看一下下面的代码: package com.yonyou.test; import java.util.Date; class Test extends Date{ private static final long serialVersionUID = 1L; public static void main(String[] args) { new Test().print(); } public void print(){ System.out.println("当

Java中的intern变量的讲解

一般我们变成很少使用到 intern这个方法,今天我就来解释一下这个方法是干什么的,做什么用的 首先请大家看一个例子: [java] view plain copy print? public static void main(String[] args) throws Exception { String a =  "b" ; String b =  "b" ; System.out.print( a == b); String c = "d"

java中Collection框架的讲解

下面要开始java中相关集合框架的学习啦. Are you ready?Let's go~~ 今天要讲解的Java中的Collection框架. 1) 首先查看jdk中Collection类的源码后会发现如下内容: ... * @see AbstractCollection * @since 1.2 */ public interface Collection<E> extends Iterable<E> { // Query Operations 通过查看可以发现Collecti

java中volatile不能保证线程安全(实例讲解)

java中volatile不能保证线程安全(实例讲解) 转载  2017-09-04   作者:Think-007    我要评论 下面小编就为大家带来一篇java中volatile不能保证线程安全(实例讲解).小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 今天打了打代码研究了一下java的volatile关键字到底能不能保证线程安全,经过实践,volatile是不能保证线程安全的,它只是保证了数据的可见性,不会再缓存,每个线程都是从主存中读到的数据,而不是从缓存

(转)举例讲解JAVA中的堆和栈

转自:http://blog.csdn.net/lifuxiangcaohui/article/details/24936839 Java中堆和堆栈的区别 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. (降低内存或者说是程序方面的内存泄露等问题出现的几率?) 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器.但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性.另外,栈

java中反射机制原理讲解

 反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. 反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接.但是反射使用不当会成本很高! 看概念很晕的,继续往下看. 二,反射机制的

详细讲解 java 中的synchronized 转自 http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html

Java synchronized详解 第一篇: 使用synchronized 在编写一个类时,如果该类中的代码可能运行于多线程环境下,那么就要考虑同步的问题.在Java中内置了语言级的同步原语 --synchronized,这也大大简化了Java中多线程同步的使用.我们首先编写一个非常简单的多线程的程序,是模拟银行中的多个线程同时对同一 个储蓄账户进行存款.取款操作的.在程序中我们使用了一个简化版本的Account类,代表了一个银行账户的信息.在主程序中我们首先生成了 1000个线程,然后启动