`
zyz611
  • 浏览: 94889 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java jsch执行远程命令

    博客分类:
  • java
 
阅读更多
/* 
  * SSHManager
  * 
  * @author cabbott
  * @version 1.0
  */
package jsch;

import com.jcraft.jsch.*;

import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;
import java.util.logging.Logger;

public class SSHManager
{
    private static final Logger LOGGER = Logger.getLogger(SSHManager.class.getName());

    private JSch jschSSHChannel;

    private String strUserName;

    private String strConnectionIP;

    private int intConnectionPort;

    private String strPassword;

    private Session sesConnection;

    private int intTimeOut;

    private void doCommonConstructorActions(String userName, String password, String connectionIP,
            String knownHostsFileName)
    {
        jschSSHChannel = new JSch();

        try
        {
            jschSSHChannel.setKnownHosts(knownHostsFileName);
        }
        catch (JSchException jschX)
        {
            logError(jschX.getMessage());
        }

        strUserName = userName;
        strPassword = password;
        strConnectionIP = connectionIP;
    }

    public SSHManager(String userName, String password, String connectionIP, String knownHostsFileName)
    {
        doCommonConstructorActions(userName, password, connectionIP, knownHostsFileName);
        intConnectionPort = 22;
        intTimeOut = 60000;
    }

    public SSHManager(String userName, String password, String connectionIP, String knownHostsFileName,
            int connectionPort)
    {
        doCommonConstructorActions(userName, password, connectionIP, knownHostsFileName);
        intConnectionPort = connectionPort;
        intTimeOut = 60000;
    }

    public SSHManager(String userName, String password, String connectionIP, String knownHostsFileName,
            int connectionPort, int timeOutMilliseconds)
    {
        doCommonConstructorActions(userName, password, connectionIP, knownHostsFileName);
        intConnectionPort = connectionPort;
        intTimeOut = timeOutMilliseconds;
    }

    public String connect()
    {
        String errorMessage = null;

        try
        {
            sesConnection = jschSSHChannel.getSession(strUserName, strConnectionIP, intConnectionPort);
            sesConnection.setConfig("StrictHostKeyChecking", "no");
            sesConnection.setPassword(strPassword);
            // UNCOMMENT THIS FOR TESTING PURPOSES, BUT DO NOT USE IN PRODUCTION
            // sesConnection.setConfig("StrictHostKeyChecking", "no");
            sesConnection.connect(intTimeOut);
        }
        catch (JSchException jschX)
        {
            errorMessage = jschX.getMessage();
        }

        return errorMessage;
    }

    private String logError(String errorMessage)
    {
        if (errorMessage != null)
        {
            LOGGER.log(Level.SEVERE, "{0}:{1} - {2}", new Object[] {strConnectionIP, intConnectionPort, errorMessage});
        }

        return errorMessage;
    }

    private String logWarning(String warnMessage)
    {
        if (warnMessage != null)
        {
            LOGGER.log(Level.WARNING, "{0}:{1} - {2}", new Object[] {strConnectionIP, intConnectionPort, warnMessage});
        }

        return warnMessage;
    }

    public String sendCommand(String command)
    {
        StringBuilder outputBuffer = new StringBuilder();

        try
        {
            Channel channel = sesConnection.openChannel("exec");
            ((ChannelExec) channel).setCommand(command);
            InputStream commandOutput = channel.getInputStream();
            channel.connect();
            int readByte = commandOutput.read();

            while (readByte != 0xffffffff)
            {
                outputBuffer.append((char) readByte);
                readByte = commandOutput.read();
            }

            channel.disconnect();
        }
        catch (IOException ioX)
        {
            logWarning(ioX.getMessage());
            return null;
        }
        catch (JSchException jschX)
        {
            logWarning(jschX.getMessage());
            return null;
        }

        return outputBuffer.toString();
    }

    public void close()
    {
        sesConnection.disconnect();
    }

}
分享到:
评论

相关推荐

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

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

    JSCH执行命令是输入密码的方法

    本文将深入探讨如何使用JSCH库来执行远程命令,并且处理输入密码的情况。我们将参考CSDN博客文章"JSCH执行命令是输入密码的方法",并结合相关标签"JSCH Password System.in"进行详细讲解。 首先,了解SSH协议至关...

    Jsch批量执行多条命令,包含切换用户输入密码

    模板化执行命令示例 [$]send[su - root] [Password:]password[123456] [#]send[cd /etc] [#]send[] [#]send[] [#]send[exit] [$]send[exit] 具体模板参数意义下载解压缩后查看batch.list中有解释

    jsch源代码_通过java代码ssh登录主机远程执行命令并返回

    jsch通过java代码ssh登录主机远程执行命令并返回结果。注意,这个是源代码,请自行编译后在使用。当然,也可以根据自己的需要更改源代码。

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

    `runCmd`方法用于执行远程命令。首先,我们打开一个`ChannelExec`通道,设置要执行的命令,然后连接该通道。通过`getInputStream`读取命令的输出,并使用`BufferedReader`逐行读取打印出来。最后关闭输入流和通道。 ...

    基于jsch的ssh访问

    基于jsch包实现远程服务器的sftp访问,并可远程发送命令执行,可以配合https://download.csdn.net/download/u011230766/10710755,实现密钥登录,类KeyGen用于生成非对称密钥

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

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

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

    然后,你可以使用以下代码执行远程命令: ```java import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; import java.io....

    如何用java程序(JSch)运行远程linux主机上的shell脚本

    JSch(Java Secure Channel)是一个纯Java实现的SSH2库,它允许Java应用程序连接到SSH服务器并执行各种操作,包括运行远程shell命令和脚本。以下是如何使用JSch在Java程序中运行远程Linux主机上的shell脚本的详细...

    java通过ssh调用centos7指令

    java通过ssh调用centos7指令,获取磁盘空间使用率、磁盘空间使用情况、网络使用情况,CPU使用率,内存使用率

    java进行ssh协议连接的jar包jsch-0.1.54.jar

    JSch库提供了一个API,使得开发者可以方便地在Java应用中建立SSH连接,执行命令、传输文件以及打开隧道。JSch-0.1.54.jar是该库的一个版本,包含了所有必要的类和方法来支持SSH连接。 要使用JSch库,首先需要在项目...

    java执行远程linux服务器命令

    例如,Apache Commons Exec提供了一个方便的API来执行本地或远程命令,而Spring的Shell Executor则是在Spring应用中执行命令的工具。 至于smDemo文件,这可能是示例代码或示例项目的名称。在实际情况中,这个文件...

    java应用程序远程登录linux并执行其命令

    2. **执行远程命令**:一旦连接建立,我们可以通过`session.openChannel("exec")`创建一个执行命令的通道,然后通过该通道发送命令: ```java Channel channel = session.openChannel("exec"); ((ChannelExec) ...

    JSCH免费下载啦

    JSCH库提供了对SSH2协议的强大支持,使得用户可以通过安全的方式进行远程文件传输、执行命令以及建立安全的网络隧道。 **SSH协议** SSH是一种网络协议,用于加密网络连接,常用于远程登录和其他网络服务。它的主要...

    java_ssh执行命令

    Java SSH 执行命令主要涉及到Java编程语言与SSH(Secure Shell)协议的交互,通常用于远程服务器的管理和自动化任务执行。SSH是一种网络协议,允许用户安全地在不安全的网络上进行远程登录和其他网络服务。在Java中...

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

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

    Java 调用 Linux shell 命令执行框架:sshxcute

    sshxcute 就是这样一个框架工具集,它基于 JSCH 构建,允许工程师利用Java 代码通过 SSH 连接远程批量执行 Linux/UNIX 系统上的命令或者脚本,同时加入了判断成功与否,取回输出等多种实用功能。sshxcute 不管是针对...

    Java调用本地的远程桌面连接

    要实现Java调用本地的远程桌面连接,通常会使用`Runtime.getRuntime().exec()`方法来执行系统命令。这个方法允许我们在Java程序中执行任何可执行文件或命令行脚本。例如,我们可以构造一个包含用户名、密码和目标...

    java执行ssh命令

    在Java编程中,执行SSH(Secure Shell)命令是一项常见的任务,尤其在远程服务器管理、自动化运维和分布式系统中。SSH是一种网络协议,用于安全地在远程主机上执行命令和传输数据。下面我们将深入探讨如何在Java中...

    java实现模拟SSH和telnet登陆(实现命令的发送和接受)

    JSch 是一个纯 Java 实现的 SSH2 客户端,可以用来连接到 SSH 服务器,进行文件传输、命令执行等操作。下面是一个简单的 SSH 连接示例: ```java import com.jcraft.jsch.*; public class SSHConnection { public...

Global site tag (gtag.js) - Google Analytics