Java调用ssh执行Linux命令

fiy 其他 101

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Java可以使用JSch库来调用ssh执行Linux命令。

    首先,需要导入JSch库。可以在Maven项目中添加以下依赖:

    “`xml

    com.jcraft
    jsch
    0.1.55

    “`

    然后,可以使用以下代码来执行Linux命令:

    “`java
    import com.jcraft.jsch.*;

    public class SshCommandExecutor {
    public static void main(String[] args) {
    String host = “your_host”;
    int port = 22;
    String username = “your_username”;
    String password = “your_password”;

    try {
    JSch jsch = new JSch();
    Session session = jsch.getSession(username, host, port);
    session.setPassword(password);
    session.setConfig(“StrictHostKeyChecking”, “no”);
    session.connect();

    ChannelExec channelExec = (ChannelExec) session.openChannel(“exec”);
    channelExec.setCommand(“your_linux_command”);

    channelExec.connect();

    InputStream inputStream = channelExec.getInputStream();

    byte[] buffer = new byte[1024];
    StringBuilder output = new StringBuilder();
    while (inputStream.read(buffer) != -1) {
    output.append(new String(buffer));
    }
    System.out.println(output.toString());

    channelExec.disconnect();
    session.disconnect();
    } catch (JSchException | IOException e) {
    e.printStackTrace();
    }
    }
    }
    “`

    在上述代码中,需要将`your_host`、`your_username`、`your_password`和`your_linux_command`替换成实际的主机、用户名、密码和Linux命令。

    以上代码会连接到指定的SSH服务器,并执行指定的Linux命令。执行结果会输出到控制台。

    需要注意的是,为了安全起见,建议使用SSH密钥验证方式来替代密码验证方式。可以使用`jsch.addIdentity(“your_private_key_path”)`来指定私钥文件的路径。

    另外,还可以通过设置环境变量`JSCH_SSHD`来启用服务器端调试信息输出,方便排查问题。例如,可以设置`JSCH_SSHD=debug`来输出调试信息。

    以上就是使用Java调用ssh执行Linux命令的方法。希望对你有帮助!

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    要在Java中调用SSH执行Linux命令,可以使用JSch库。以下是在Java中使用JSch库执行SSH命令的步骤:

    1. 首先,需要添加JSch库的依赖项。可以通过在项目的构建工具(如Maven或Gradle)的配置文件中添加JSch库的依赖项来实现。例如,在Maven项目的pom.xml文件中添加以下内容:

    “`xml

    com.jcraft
    jsch
    0.1.55

    “`

    2. 在Java文件中导入JSch库的类。

    “`java
    import com.jcraft.jsch.*;
    “`

    3. 创建一个JSch对象。

    “`java
    JSch ssh = new JSch();
    “`

    4. 使用JSch对象创建一个SSH会话。

    “`java
    Session session = ssh.getSession(username, host, port);
    “`

    其中,`username`是登录SSH服务器的用户名,`host`是SSH服务器的主机名或IP地址,`port`是SSH服务器的端口号(默认是22)。

    5. 设置SSH会话的密码(或者使用其他身份验证方式,如密钥)。

    “`java
    session.setPassword(password);
    “`

    其中,`password`是登录SSH服务器的密码。

    6. 开启SSH会话。

    “`java
    session.connect();
    “`

    7. 创建一个SSH通道。

    “`java
    Channel channel = session.openChannel(“exec”);
    “`

    8. 设置SSH通道的命令。

    “`java
    ((ChannelExec) channel).setCommand(command);
    “`

    其中,`command`是要执行的Linux命令。

    9. 设置SSH通道的输入和输出流。

    “`java
    channel.setInputStream(null);
    ((ChannelExec) channel).setErrStream(System.err);
    InputStream in = channel.getInputStream();
    “`

    10. 开启SSH通道。

    “`java
    channel.connect();
    “`

    11. 读取SSH通道的输出结果。

    “`java
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String line;
    while ((line = reader.readLine()) != null) {
    System.out.println(line);
    }
    “`

    12. 关闭SSH通道和会话。

    “`java
    channel.disconnect();
    session.disconnect();
    “`

    以上是在Java中使用JSch库调用SSH执行Linux命令的基本步骤。通过这种方式,您可以在Java中远程执行Linux命令,并获取命令的执行结果。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    使用Java调用SSH执行Linux命令可以分为以下几个步骤:

    1. 引入依赖
    首先需要引入相关的依赖,可以使用JSch库。在Maven项目中,可以在pom.xml文件中添加以下依赖:
    “`xml

    com.jcraft
    jsch
    0.1.55

    “`

    2. 创建SSH连接
    使用JSch库,需要创建一个SSH连接对象,并设置连接的主机名、用户名和密码。例如:
    “`java
    String host = “YourSSHHost”;
    String username = “YourSSHUsername”;
    String password = “YourSSHPassword”;

    JSch jsch = new JSch();
    Session session = jsch.getSession(username, host, 22);
    session.setPassword(password);
    session.setConfig(“StrictHostKeyChecking”, “no”);
    session.connect();
    “`

    3. 执行命令
    通过SSH连接对象,可以创建一个Channel,并执行需要的命令。执行命令有两种方式:使用Shell或者使用SFTP。下面分别介绍这两种方式。

    使用Shell执行命令:
    “`java
    ChannelExec channelExec = (ChannelExec) session.openChannel(“exec”);
    channelExec.setCommand(“YourLinuxCommand”);
    channelExec.setInputStream(null);
    channelExec.setErrStream(System.err);

    InputStream in = channelExec.getInputStream();
    channelExec.connect();

    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String line;
    while ((line = reader.readLine()) != null) {
    System.out.println(line);
    }

    channelExec.disconnect();
    “`

    使用SFTP执行命令:
    “`java
    ChannelSftp channelSftp = (ChannelSftp) session.openChannel(“sftp”);
    channelSftp.connect();

    channelSftp.cd(“YourRemoteDirectory”);
    InputStream in = channelSftp.get(“YourRemoteFile”);

    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String line;
    while ((line = reader.readLine()) != null) {
    System.out.println(line);
    }

    channelSftp.disconnect();
    “`

    4. 关闭连接
    执行完毕后,需要关闭SSH连接:
    “`java
    session.disconnect();
    “`

    以上就是使用Java调用SSH执行Linux命令的方法和操作流程。通过JSch库,我们可以方便地在Java程序中执行远程的Linux命令,并获取结果。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部