java执行 scp_Java执行SSH/SCP之JSch
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相关推荐
- 一个Java Web后台任务执行工具的设计与实现
一个Java Web后台任务执行工具的设计与实现 提到后台任务,最容易想到的恐怕就是Java 中的Timer或者大名鼎鼎的开源定时器Quartz,但是,从本质讲,他们都是定时器,以时间间隔严格的进行间 ...
- Java操作Kafka执行不成功
使用kafka-clients操作kafka始终不成功,原因不清楚,下面贴出相关代码及配置,请懂得指点一下,谢谢! 环境及依赖 <dependency><groupId>org ...
- “Java是编译执行的语言”这句话对吗?
现在让你谈谈对Java平台的理解,你是否会感觉内容过于庞大?这个问题是比较宽泛的,Java发展到现在已经不仅仅是语言这么简单了,Java平台涉及的,包括但不仅限于下面提到的这些内容: Java语言本身 ...
- java代码块执行顺序_Java笔记 | Java代码块执行顺序测试
最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下. 如有错漏,希望路过的大佬指出来,以便我进行更改. 先上代码吧! public class ClassA { ...
- JAVA 文件编译执行与虚拟机(JVM)简单介绍
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytpo3 java程序的内存分配 JAVA 文件编译执行与虚拟机(JVM)介绍 ...
- java调用、执行groovy代码
java调用.执行groovy代码 1: package test; 2: 3: import javax.script.ScriptEngine; 4: import javax.script.Sc ...
- java数据库编程——执行SQL 语句
[0]README 1) 本文文字描述+source code 均转自 core java volume 2 , 旨在理解 java数据库编程--执行SQL 语句 的基础知识 : 2)for sour ...
- java并发任务执行_Java并发性-任务反馈
java并发任务执行 从我 上一篇 关于java.util.concurrent包的 文章 的结尾处 摘下来 ,这很有趣,有时甚至必须在并发任务启动后从它们那里获得反馈. 例如,假设一个应用程序必须发 ...
- Java 的混合执行模式
导航 解释执行与编译执行 总结 解释执行与编译执行 Java 虽然是先编译再运行,但实际上,对于 JVM 来说,依然是逐条解释执行字节码文件中的指令,即大部分情况下,Java 都是解释执行的. JVM ...
最新文章
- 8086汇编学习笔记10-端口
- python3 string
- zdal配置文件_Autofac的基本使用---4、使用Config配置
- .net httpwebrequest 并发慢_go语言并发之MPG模型
- 证监会依法对4宗案件作出行政处罚
- android:inputType参数类型说明
- 用牛顿法求方程的根的c语言编程,用牛顿迭代法和二分法求方程的根【C语言】...
- 公司有代理 虚拟机安装ubuntu不能上外网
- 一个博友的SQL问题解决过程
- mybatis中Mapper映射
- 结构光三维重建阶段性总结
- 外贸企业域名邮箱怎么申请?
- window7电脑屏幕亮度调节的方法
- fatal: unable to connect to gitlab.domian: gitlab.domian : Temporary failure in name resolution
- .mat文件转TIF图片文件,python代码
- windows下ping特定端口
- 如何在华为云软件开发云上运行Python
- RaspBerry Pi 系统安装——Raspbian(精简版)
- android 横竖屏坐标转换,Android 屏幕横竖切换详解
- 编写CSDN博客,如何去掉插入的图片上的水印