通过jsch可以实现基于sftp协议的文件传输,使用的是ChannelSftp类,如果要在程序中实现启动服务器的一个脚本,执行某个系统命令的话,就需要用到另一个channel类了,就是ChannelExec类。
如果项目采用maven构建的话,引入
<dependency> <groupId>com.jcraft</groupId> <artifactId>jsch</artifactId> <version>0.1.50</version> </dependency>
代码示列:
package com.lipl; import com.jcraft.jsch.*; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Properties; /** * @author lipenglong * @ClassName: * @Description: this is a class desc. * @date 14-4-1 上午10:44 */ public class JschCommand { private Session session = null; private Channel channel = null; private String sftpHost = "localhost"; private int sftpPort = 22; private String sftpUserName = "petric"; private String sftpPassword = "123"; private int timeout = 30000; /** * 获取连接 * @return */ private ChannelExec getChannelExec() { try { if (channel != null && channel.isConnected()) { return (ChannelExec) channel; } JSch jSch = new JSch(); if (session == null || !session.isConnected()) { session = jSch.getSession(sftpUserName, sftpHost, sftpPort); session.setPassword(sftpPassword); Properties config = new Properties(); config.put("StrictHostKeyChecking", "no"); session.setConfig(config); session.setTimeout(timeout); session.connect(); } channel = session.openChannel("exec"); } catch (Exception e) { if (session != null) { session.disconnect(); session = null; } channel = null; } return channel == null ? null : (ChannelExec) channel; } /** * 关闭连接 */ private void closeChannel() { try { if (channel != null) { channel.disconnect(); channel = null; } if (session != null) { session.disconnect(); session = null; } } catch (Exception e) { System.out.println(e); } } /** * 执行服务器端命令 */ public boolean executeCommand(String command) { boolean flag = false; ChannelExec channelExec = getChannelExec(); if (channelExec == null) { return false; } try { channelExec.setInputStream(null); channelExec.setErrStream(System.err); channelExec.setCommand(command); InputStream in = channelExec.getInputStream(); channelExec.connect(); BufferedReader reader = new BufferedReader(new InputStreamReader(in, "utf-8")); String line = null; while ((line = reader.readLine()) != null) { System.out.println(line); } reader.close(); closeChannel(); flag = true; } catch (Exception e) { System.out.println(e); flag = false; } return flag; } public static void main(String[] args) { JschCommand jschCommand = new JschCommand(); System.out.println(jschCommand.executeCommand("date")); System.out.println("----------------------------------"); System.out.println(jschCommand.executeCommand("ruby Demo.rb")); System.out.println("----------------------------------"); System.out.println(jschCommand.executeCommand("touch abc.txt")); System.out.println("----------------------------------"); System.out.println(jschCommand.executeCommand("rm abc.txt")); } }
通过ChannelExec类可以实现执行服务器命令,如date, touch, rm等,可以执行服务器上我们写好的某个脚本,如Demo.rb。
相关推荐
JSch是一个开源项目,它允许Java开发者在应用程序中执行远程操作,如文件传输、命令执行等。版本号"0.1.54"表示这是该库的一个特定发行版,可能包含了性能优化、bug修复或新功能。 **SFTP与SSH** SFTP是基于SSH的...
JSCH(Java Simple SSH)是一个用Java编写的库,它实现了SSH2协议,允许Java应用程序进行加密的通信,如执行远程命令、文件传输等。然而,随着网络安全标准的不断提升,SSH的加密算法也在不断更新,这可能导致旧版本...
在 Java 中,可以通过 JSch 库来实现 SSH 客户端的功能,例如执行远程命令、传输文件等。SSH 提供了身份验证和数据加密,确保了远程控制过程的安全性。 在实际应用中,我们可能需要结合这些技术来实现更复杂的远程...
JSch库提供了一个API,允许开发者编写代码来执行SCP命令。下面是一个简单的示例,展示如何使用JSch上传文件到远程服务器: ```java import com.jcraft.jsch.*; public class ScpToServer { public static void ...
通过JSch,我们可以建立SSH会话,执行`sftp`(Secure File Transfer Protocol)命令,从而实现文件的远程拷贝。 4. **文件操作**: Java的`java.io`和`java.nio`包提供了丰富的文件操作API。在远程拷贝过程中,...
SSH2示例程序通常是指使用SSH2协议开发的客户端或服务器端应用程序,用于实现加密的数据传输、命令执行、文件传输等功能。在IT领域,SSH2因其强大的安全性和可靠性而被广泛应用。 SSH2协议的核心特性包括: 1. **...
这个整合能够帮助开发者在远程服务器上执行命令,或者通过DWR调用Java服务,然后通过SSH传输数据,实现更强大的功能。 首先,SSH整合的关键在于使用Java的SSH库,如JSch。JSch是一个纯Java实现的SSH2库,可以用于...
这个"ssh-lib.rar"压缩包显然包含了与SSH相关的Java库(jar包),这些库通常用于开发支持SSH协议的应用程序,例如在服务器之间进行安全的数据传输、远程执行命令等。 在Java开发中,SSH库主要分为两类:一类是实现...
`SSH`是一种加密网络协议,用于安全地远程登录、执行命令以及传输文件。它的工作原理包括身份验证、加密算法以及会话复用等机制,确保了通信的安全。`SSH`客户端和服务器端都需要特定的软件支持,其中`jar`文件...
1. **网络通信**:利用Java的Socket编程或者NIO(非阻塞I/O)实现客户端和服务器端的通信,确保数据的实时传输和交互。 2. **SSH协议**:为了安全地连接到远程服务器,可能会采用SSH(Secure Shell)协议,通过Java...
3. **Apache SSHD**:SSHD是Apache软件基金会的一个项目,它提供了一个完全实现了SSH2协议的服务器端和客户端组件。开发者可以利用这个库来构建自己的SSH服务。 4. **Bouncy Castle**:Bouncy Castle是一个Java安...
Apache SSHD是另一个可选的SSH实现,它提供了服务器端和客户端的功能。在Kotlin中使用Apache SSHD,可以创建一个SSH服务器并实现自定义的文件传输协议处理。 至于如何实现文件同步,这通常涉及到监控本地文件系统的...
在Java中,JSch库提供了这些功能的实现,使得开发者能够通过Java程序与远程服务器进行交互,例如执行命令、传输文件等。 JSch库的使用步骤大致如下: 1. **初始化JSch对象**:`JSch jsch = new JSch();` 2. **设置...
它允许用户通过不安全的网络连接安全地访问远程服务器,执行命令、管理文件等操作。SSH的核心特性包括公钥认证、数据加密以及防止中间人攻击。在Web开发中,SSH可以帮助开发者进行远程部署、自动化脚本执行和其他...
学习如何使用这些工具进行文件传输、远程执行命令等操作是实际应用的一部分。 7. **API使用**:对于开发者来说,了解如何使用SSH2相关的编程库(如Java的JSch,Python的paramiko等)来创建自定义的应用程序是非常有...
对于Java开发者来说,SSH可以用于自动化部署、版本控制(如Git通过SSH链接)以及远程执行命令。例如,使用Jsch库,Java程序可以直接建立SSH连接,执行远程脚本,进行文件传输等操作。Jsch库提供了丰富的API,能够...
MINA为开发高性能和稳定的网络应用程序提供了基础架构,如SSH服务器端实现。 在开发过程中,引入SSH相关jar包时,需要确保版本的兼容性,因为不同版本的库可能会有API的变更或者不兼容性问题。同时,正确配置公钥...
JSch是一个Java实现的SSH2库,它提供了客户端和服务器端的实现。将JSch库添加到Android项目的依赖中,可以通过Gradle添加如下代码: ```groovy implementation 'com.jcraft:jsch:0.1.55' ``` 2. **配置SSH连接**...
使用Python的paramiko库或者Java的JSch库可以实现SSH连接和命令执行。 Sybase数据库管理系统的使用涉及到SQL语言,它是用于查询、操作和管理关系数据库的标准语言。在EXTJS应用中,增(INSERT)、删(DELETE)、改...
- 使用Java的JSch库来实现SSH连接和命令执行。JSch库提供了连接、认证、文件传输等功能。 - 通过SSH隧道执行SQL命令或操作文件系统,实现书签的CRUD操作。 5. **书签的增删改查操作** - **增加书签**:通过SSH...