`
chenxu_8456
  • 浏览: 41879 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

使用JSCH连接Linux服务器(1)-执行linux命令

阅读更多
在java中可以使用jsch连接远程Linux服务器,并在服务器上执行传送命令,同时该jar包也可以使用ftp在服务器上上传下载文件,本节讲述如何通过该jar包传送linux命令并且执行:
package com.aliyun.utility.jsch;

import java.io.InputStream;
import java.util.Properties;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;

public class JSCHUtil {
	private static JSCHUtil instance;

	public static JSCHUtil getInstance() {
		if (instance == null) {
			instance = new JSCHUtil();
		}
		return instance;
	}

	private JSCHUtil() {

	}

	private Session getSession(String host, int port, String ueseName)
			throws Exception {
		JSch jsch = new JSch();
		Session session = jsch.getSession(ueseName, host, port);
		return session;
	}

	public Session connect(String host, int port, String ueseName,
			String password) throws Exception {
		Session session = getSession(host, port, ueseName);
		session.setPassword(password);
		Properties config = new Properties();
		config.setProperty("StrictHostKeyChecking", "no");
		session.setConfig(config);
		session.connect();
		return session;
	}

	public String execCmd(Session session, String command) throws Exception {
		if (session == null) {
			throw new RuntimeException("Session is null!");
		}
		ChannelExec exec = (ChannelExec) session.openChannel("exec");
		InputStream in = exec.getInputStream();
		byte[] b = new byte[1024];

		exec.setCommand(command);
		exec.connect();
		StringBuffer buffer = new StringBuffer();
		while (in.read(b) > 0) {
			buffer.append(new String(b));
		}
		exec.disconnect();

		return buffer.toString();
	}

	public void clear(Session session) {
		if (session != null && session.isConnected()) {
			session.disconnect();
			session = null;
		}
	}

	public static void main(String[] args) throws Exception {
		Session session = JSCHUtil.getInstance().connect("10.9.9.135", 22,
				"yy", "yy");
		String cmd = "cd /" + ";" + "ls -al |grep home";
		String result = JSCHUtil.getInstance().execCmd(session, cmd);// 多条命令之间以;分隔
		System.out.println(result);
		System.exit(0);
	}
}
分享到:
评论

相关推荐

    java使用JSCH进行连接远程服务器Demo

    Java使用JSCH(Java Secure Channel)库连接远程服务器是一个常见的任务,特别是在自动化运维、文件传输或者执行远程命令等场景中。JSCH是一个纯Java实现的SSH2库,它提供了连接到支持SSH协议的服务器的能力,如...

    jsch-0.1.55.jar 包

    `jsch-0.1.55.jar` 是一个Java库,主要用于实现SSH(Secure Shell)协议,它允许Java应用程序在远程Linux服务器上进行安全的登录和命令执行。SSH是一种网络协议,用于加密网络通信,确保数据传输的安全性,广泛应用...

    Java中通过jsch来连接远程服务器执行linux命令

    总结来说,JSCH提供了一种灵活且强大的方式,允许Java开发者在远程Linux服务器上执行命令,这对于自动化运维、监控或者数据处理等场景非常有用。但同时,也需要注意相应的安全措施,以避免潜在的安全风险。

    java通过代码登录远程linux服务器并执行linux命令源码以及jar包

    总的来说,Java通过JSch库远程登录Linux服务器并执行命令,是Java与Linux系统交互的一种常用方式,尤其适用于自动化运维和脚本化的任务。通过理解并实践这些代码,你将能够更好地理解和掌握Java进行远程操作的能力。

    java执行远程linux服务器命令

    对于"工具"标签,我们可以理解为使用现成的工具库,如Apache Commons Exec或Spring的Shell Executor,它们可以简化命令执行的过程。例如,Apache Commons Exec提供了一个方便的API来执行本地或远程命令,而Spring的...

    jsch-0.1.55.jar java语言linux系统文件安全传输工具包 - 亲测可用,请放心下载

    此外,由于JSch支持shell命令执行,因此还可以扩展到执行远程系统的各种管理任务。 **使用步骤** 1. **添加依赖**:首先,将`jsch-0.1.55.jar`文件添加到项目类路径中,如果是Maven或Gradle项目,需要在相应的构建...

    Java远程连接Linux服务器并执行命令及上传文件功能

    * 使用JSch库连接Linux服务器,需要使用Session和ChannelSftp两个类,Session用来建立连接,ChannelSftp用来执行命令和上传文件。 * 在连接服务器时,需要设置用户名称、密码、端口号等参数,并设置...

    详解Java使用Jsch与sftp服务器实现ssh免密登录

    4. 在Java中,通过JSch库连接到SFTP服务器时,需要先建立一个JSch对象,然后创建一个Session(会话),并设置Session的配置属性。 5. 接着通过Session对象获取一个Channel(通道),并打开SFTP通道。此时可以利用...

    java控制台输入cmd命令, ssh远程linux shell命令, 并打印命令输出到控制台

    在Java编程中,有时我们需要与操作系统进行交互,执行系统级别的命令,例如在控制台执行CMD命令或者通过SSH连接远程Linux服务器执行shell命令。这在自动化脚本、系统管理或者远程监控等场景中非常常见。本篇文章将...

    jsch-0.1.55jar&&javadoc&&sources.zip

    总之,JSCH为Java开发者提供了强大且灵活的SSH功能,通过这个压缩包提供的库、源代码和文档,开发者可以轻松地将SSH连接和相关功能集成到他们的应用程序中,实现与Linux服务器的安全交互。无论是进行远程命令执行、...

    jsch0.1.55.jar_jsch0.1.53.jar

    JSch是Java Secure Channel的缩写,它是一个纯Java实现的SSH2库,允许Java应用程序连接到支持SSH协议的服务器,进行安全的数据传输。在给定的标题"jsch0.1.55.jar_jsch0.1.53.jar"中,提到了两个不同版本的JSch库...

    Linux服务器批处理远程命令执行工具

    Linux服务器批处理远程命令执行工具。纯java实现的ssh协议(jsch),支持同时连接多台linux主机,执行相同的命令。只需配置目标主机的ip地址、用户名和密码即可实现远程操作。服务器无需配置ssh对等协议或安装任何...

    SFTP下载(JSch可跨服务器)

    1. **建立SSH连接**:使用`JSch`类创建一个实例,然后通过`Session.connect()`方法建立到远程服务器的连接。连接参数包括服务器地址、端口、用户名和密码。 ```java JSch jsch = new JSch(); Session session = ...

    jsch的jar包,包含0.1.51,0.1.52,0.1.53,0.1.54等这几个版本

    5. **通道(Channels)**:JSch支持多种类型的SSH通道,如Session Channel(用于执行命令)、DirectTCP/IP Channel(用于端口转发)和Shell Channel(提供一个交互式shell)。 6. **会话管理**:可以创建、管理和...

    登陆linux服务器执行cmd.zip

    在IT行业中,Linux服务器...通过理解和应用这些概念,您可以使用Java实现连接到Linux服务器并执行命令的任务,从而提升运维效率和程序的自动化程度。在实际开发过程中,确保遵循最佳实践,以确保系统的稳定性和安全性。

    JSch对linux上文件的操作

    在IT行业中,JavaScript SSH (JSch) 是一个广泛使用的Java库,它允许开发人员通过SSH协议与远程Linux服务器进行交互,包括执行SFTP(Secure File Transfer Protocol)操作。本篇文章将深入探讨JSch如何实现对Linux上...

    java开发的swing客户端,远程执行linux命令.zip

    具体来说,开发者可能使用了Java的SSH(Secure Shell)库,如JSch或者Apache MINA,这些库提供了与远程Linux服务器安全连接并执行命令的能力。 SSH协议是一种在网络上传输数据的安全方式,通常用于远程登录、文件...

    JSCH0.1.46

    版本0.1.46是JSCH的最新版,它提供了丰富的功能,使开发者能够通过SSH协议在Java应用中执行远程操作,如文件传输、命令执行、端口转发等。在UNIX和Linux操作系统上,SSH是一种广泛使用的安全通信协议,用于加密网络...

    jsch-0.1.54

    `jsch-0.1.54` 是一个基于Java的开源库,主要用于实现SSH(Secure Shell)协议,它允许开发者通过Java程序远程连接到Linux服务器,执行命令、传输文件,甚至进行图形界面操作。SSH是一种网络协议,广泛应用于远程...

    jsch-0.1.55.jar

    jsch.jar 常用的java通过代码登录远程linux服务器并执行linux命令需要的jar

Global site tag (gtag.js) - Google Analytics